0
我試圖使用套接字和線程將多個客戶端連接到服務器。也就是說,每次客戶端連接到服務器的端口時,服務器程序都會創建一個新線程並在它自己的線程上處理連接。目前,我在連接同一客戶端兩次時遇到問題。有誰知道如何防止這個問題?這是我的代碼。Android多線程程序中的多個套接字連接
這是我的服務器連接代碼:
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();
我已經測試的客戶端連接,並知道它的工作原理。由於某些原因,服務器一直連接兩個相同的客戶端。
很高興看到println調用的實際輸出,還有更多此類調用,以及您在自己的調試期間發現的內容,以及線程代碼以及缺少的「ServerHello」類。 –