我正在尝试使用套接字和线程将多个客户端连接到服务器。也就是说,每次客户端连接到服务器中的端口时,服务器程序都会创建一个新线程并在它自己的线程上处理连接。目前,我遇到了两次连接同一个客户端的问题。有谁知道如何防止这个问题?这是我的代码。
这是我的服务器连接代码:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerConnect {
public static void main(String[] args) throws IOException,
InterruptedException {
ServerSocket serverSocket = null;
// boolean listening = true;
try {
serverSocket = new ServerSocket(20001);
} catch (IOException e) {
System.err.println(e.getMessage());
System.exit(-1);
}
int players = 6;
ServerHello[] cArray = new ServerHello[players];
Thread[] threadPool = new Thread[players];
for (int i = 0; i < players; i++) {
System.out.println("Connection number " + (i + 1)
+ " waiting for client on port 20001.");
Socket clientServer = serverSocket.accept();
cArray[i] = new ServerHello(clientServer);
threadPool[i] = new Thread(cArray[i]);
threadPool[i].start();
}
for (int i = 0; i < players; i++)
threadPool[i].join();
//My Code
for (int i = 0; i < players; i++) {
cArray[i].closeConnect();
}
serverSocket.close();
我已经测试过客户端连接并且知道它可以工作。但是,出于某种原因,服务器一直以两个为一组连接同一个客户端。