67,514
社区成员
发帖
与我相关
我的任务
分享
/*
* 支持多客户端的服务器端实现
*/
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) {
}
}
}
}
MulThreadSocketServer.serverSocket.close();