如何关闭已经创建好的TCP Server
由于项目需要,我创建了一个TCP Server用来接收其他客户端的连接,并接收相应的数据。
项目需要根据指令进行相应的操作,如果我收到关闭TCP Server的指令,就要关闭当前的TCP Server。
我应该怎么关闭TCP Server呢?
下面是我创建TCP Server的代码。
我在另外一个类里面调用下面方法关闭连接,但是下次客户端还能连接上TCP Server,说明这样不能完全关闭TCP Server
我该如何关闭已经创建好的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呢?求大家指点一二,不胜感激!谢谢!
...全文
相关推荐
TCPIP-Server_TCP,IP_labview_服务器_源码.rar
TCPIP-Server_TCP,IP_labview_服务器_源码.rar
ESP32 开发之旅⑨ TCP Server
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力。希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石。。。 快速导航 单片机菜鸟的博客快速索引(快速找到你要的) 如果觉得有用,麻烦点赞收藏,您的支持是博主创作的动力。 文章目录1. 前言2. WiFiServer库2.1 管理server2.1.1 WiFiServer server(port) —...
【CANoe示例分析】TCP/UDP Server/Client
以下示例来自CANoe DEMO,路径为C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.101\IO_HIL\TCP_IP Server TCP 由于TCP连接是服务器的tcp socket在listen状态下接受连接请求,从而完成三次握手操作 所以,首先服务器应该先创建好tcp socket后,绑定本地端口,然后处于监听状态,这样才能随时接受客户端的连接请求 CANoe DEMO里关于TCP连接通信是在面板上完成的 .
最简单的mfc tcp server
一个用vs2008编写的,基于mfc的最简单的tcp 服务端程序。附带两张截图做说明。基于CSOCKET类。
HP-Socket开发TCP Server
HP-Socket开发TCP Server。 简单地TCP Server,示例如何使用HP-Socket


