社区
Java SE
帖子详情
请教怎样关闭服务器端的socket?
muchcsdn
2002-01-15 04:22:25
主程序把socket的各种参数传给一个Thread,在thread中打开端口,但是我怎么在主程序中关闭这个socket呢?
还有我想知道怎么才能知道当前没有任何客户端连接?
谢谢了!
...全文
197
9
打赏
收藏
请教怎样关闭服务器端的socket?
主程序把socket的各种参数传给一个Thread,在thread中打开端口,但是我怎么在主程序中关闭这个socket呢? 还有我想知道怎么才能知道当前没有任何客户端连接? 谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ggyy
2002-01-22
打赏
举报
回复
GUANZHU
muchcsdn
2002-01-16
打赏
举报
回复
谢谢2位,分数不多,可是哪里给分呢?
zych72
2002-01-15
打赏
举报
回复
回复人: muchcsdn(muchdorry) (2002-1-15 16:44:36) 得0分
to zych72(闹闹):
你的意思是在thread.run里面不停的判断那个标志?
是的,这样处理socket的thread可以在退出之前处理好后事
skyyoung
2002-01-15
打赏
举报
回复
import java.io.*;
import java.util.*;
import java.net.*;
class TCPServerSocketThread extends Thread
{
private static ServerSocket ListeningSocket;
private Vector CCSArray;
private int CCSCount;
private static int SocketsCount;
private static int LPort;
private Socket tmpCCS;
TCPServerSocketThread (Vector targetSocketArr, int ListenPort)
{
ListeningSocket = null;
SocketsCount = 0;
if(ListenPort > 1024)
LPort = ListenPort;
else
LPort = 10000;
CCSArray = targetSocketArr;
}
TCPServerSocketThread (Vector targetSocketArr)
{
ListeningSocket = null;
SocketsCount = 0;
LPort = 10000;
CCSArray = targetSocketArr;
}
public void stopServer()
{
try
{
System.out.println("Close All CCS...");
int sockCount = CCSArray.size();
TCPCCSocket tmpWCCS;
while(sockCount > 0)
{
tmpWCCS = (TCPCCSocket)CCSArray.elementAt((sockCount - 1));
System.out.println("Close Next CCS...");
if(tmpWCCS != null)
tmpWCCS.closeSocket();
CCSArray.remove((sockCount - 1));
sockCount -- ;
}
System.out.println("Close Server Socket...");
ListeningSocket.close();
SocketsCount -= 1;
super.stop();
}
catch(IOException exFL)
{
System.out.println("Exception On Close Server Socket...");
exFL.printStackTrace();
}
}
public void run()
{
System.out.println("Run Server Thread...");
System.out.println(toString());
if(ListeningSocket == null)
return;
TCPCCSocket tmpWCCS;
while(true)
{
try
{
System.out.println("Server Thread Listening...");
tmpCCS = ListeningSocket.accept();
System.out.println(tmpCCS.toString());
tmpWCCS = new TCPCCSocket(tmpCCS);
CCSArray.add(tmpWCCS);
tmpWCCS.start();
CCSCount += 1;
}
catch(IOException exRL)
{
System.out.println("Exception On Server Thread Listening...");
exRL.printStackTrace();
}
}
}
public void startServer()
{
System.out.println("Start Server Thread...");
if(SocketsCount != 0)
return;
SocketsCount += 1;
try
{
System.out.println("Create Server Socket...");
ListeningSocket = new ServerSocket(LPort);
super.start();
}
catch(IOException exLS)
{
System.out.println("Exception On Create Server Socket...");
exLS.printStackTrace();
}
}
}
skyyoung
2002-01-15
打赏
举报
回复
import java.io.*;
import java.util.*;
import java.net.*;
class TCPCCSocket extends Thread
{
private Socket CCSocket;
TCPCCSocket (Socket cs)
{
CCSocket = cs;
}
public void start()
{
System.out.println("Starting CCS...");
super.start();
}
public void closeSocket()
{
try
{
System.out.println("Close CCS...");
super.stop();
CCSocket.close();
}
catch(IOException exClose)
{
System.out.println("Error When Close CCS ...");
exClose.printStackTrace();
}
}
public void run()
{
System.out.println("Running CCS...");
System.out.println(toString());
byte[] readingByte = { 0 };
try
{
while(readingByte[0] != -1)
{
readingByte[0] = (byte)CCSocket.getInputStream().read();
CCSocket.getOutputStream().write(readingByte[0]);
}
}
catch(IOException exEcho)
{
System.out.println("Error When Echo CCS ...");
}
try
{
CCSocket.close();
}
catch(IOException exClose)
{
System.out.println("Error When Close CCS ...");
exClose.printStackTrace();
}
System.out.println("End Running CCS...");
super.stop();
}
}
muchcsdn
2002-01-15
打赏
举报
回复
to zych72(闹闹):
你的意思是在thread.run里面不停的判断那个标志?
cosmo
2002-01-15
打赏
举报
回复
//main
Vector vec4Sock = new Vector(); // or use other collection such as hashtable
...
//pass the parameters and the vec4Sock into the Thread
...
socketInThread = vec4Sock.getNext();
//if socket can be close
//close socketInThread
//inside the thread
// ....
// mySocket = socket(...);
// vec4Sock.add(mySocket);
zych72
2002-01-15
打赏
举报
回复
可以通过在服务器端对打开的socket连结数判断当前是否有客户端连接
zych72
2002-01-15
打赏
举报
回复
在主程序中设置一个结束标志,并且处理socket的thread.run可以访问到此标志,如果想结束可以通过这个标志通知 thread.run来结束。
【RT-Thread作品秀】宠物智能饲养监测-电路方案
软件框架说明上电初始话后,检测传感器变化,满足设定条件的,通过wifi上传到
服务器端
目前
服务器端
只提供数据处理和存储 软件模块说明bh1750_thread_entry: 光照传感器线程 dht11_thread_entry:温湿度传感器线程 ...
lwip网络通信
socket
_
请教
下,使用 lwip
socket
udp 功能,开发板为客户端时不能够......
请教
下,使用 lwip
socket
udp 功能,开发板为客户端时不能够接收
服务器端
发送过来的数据 ?1,如果开发板为
服务器端
,收发都可以2,如果开发板为 客户端,不能够接收
服务器端
发送过来的数据,但开发板可以发送数据...
php自动向服务器发送数据,php
socket
往
服务器端
发送数据
php模拟
socket
一次连接,多次发送数据的如何实现代码复制代码 代码如下: 复制代码 代码如下:关于PHP
socket
多次收发数据的问题
请教
php大神,php如何实现点击页面上的一个按钮发我百度能找到的都是控制台启动服务器和...
android模拟器
socket
服务端,android 模拟器跟电脑
服务器端
用
socket
通讯
android 模拟器和电脑
服务器端
用
socket
通讯之前一直会用
socket
s来实现emulator和PC进行通讯,卡了几天,最后
请教
其他人终于可以连接了。 错误原因是在IP和端口,IP要用本机IP(在CMD输入ipconfig,注意:每次开机本机...
linux mysql
socket
与tcp访问_
请教
大家, Linux下怎么模拟高并发客户端进行
socket
TCP 连接?...
多维度架构之实现百万并发netkiller:多维度架构之实现百万并发zhuanlan.zhihu.com在上一节《多维度架构之会话数》中从运维角度详细介绍了会话数,本章将从开发角度介绍TCP
Socket
...理解
服务器端
与客户端服务器...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章