如何关闭已经创建好的TCP Server

新靖界 新靖界 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
由于项目需要,我创建了一个TCP Server用来接收其他客户端的连接,并接收相应的数据。
项目需要根据指令进行相应的操作,如果我收到关闭TCP Server的指令,就要关闭当前的TCP Server。
我应该怎么关闭TCP Server呢?
下面是我创建TCP Server的代码。

/*
* 支持多客户端的服务器端实现
*/
public class MulThreadSocketServer {
public static ServerSocket serverSocket = null;//serverSocket
// public static Socket socket = null; //ServerSocket与Client通信的Socket

//定义保存所有连接Socket的ArrayList
public static ArrayList<Socket> socketList=new ArrayList<Socket>();
/*
* 创建TCP ServerSocket连接
*/
public ServerSocket creatServerSocket(int port){
ServerSocket serverSocket = null;
Socket socket = null;
// 监听端口
System.out.println("创建TCPServer连接:");
try {
serverSocket = new ServerSocket(port);
return serverSocket;
} catch (Exception e) {
// TODO Auto-generated catch block
Log.d("创建TCPServer连接", "创建TCPServer连接失败");
e.printStackTrace();
return null;
}
}
/*
* 开启TCP Server服务器
*/
public void startTcpServer(int port){
// ServerSocket serverSocket = null;
Socket socket = null;

try {
serverSocket=creatServerSocket(port);
if(serverSocket!=null){
// receiveDataService.sendOkToSerialPort();//发送+OK给串口,说明TCPServer创建成功
while (true) {
boolean flag=serverSocket.isClosed();
if(!serverSocket.isClosed()){

// 获得连接
System.out.println("TCP SERVER 等待连接");
socket = serverSocket.accept();
if(socketList.size()<8){
socketList.add(socket);
// connectConunt++;
Sysout.out.println("等待连接"+ "连接成功!");
// 启动线程,处理连接
new LogicThread(socket);
}else{
// receiveDataService.sendErrToSerialPort();//发送+ERR给串口,说明TCPServer创建失败
Sysout.out.println("开启一个TCP Server连接"+"最大连接数不超过8个,连接失败");
}

}else{
Sysout.out.println("TCP Server等待连接"+"ServerSocket已经关闭");
break;
}

}
}else{
// receiveDataService.sendErrToSerialPort();//发送+ERR给串口,说明TCPServer创建失败
Sysout.out.println("开启TCPServer"+"创建TCPServer连接失败");
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
serverSocket.close();
} catch (Exception e) {
}
}
}
}

我在另外一个类里面调用下面方法关闭连接,但是下次客户端还能连接上TCP Server,说明这样不能完全关闭TCP Server
MulThreadSocketServer.serverSocket.close();

我该如何关闭已经创建好的TCP Server呢?求大家指点一二,不胜感激!谢谢!
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
新靖界
Java EE 67,535 成员 225,843 内容