0
我正在创建一个简单的http服务器。我有一个主线程,等待循环中的连接被接受。一旦连接被接受,我创建一个新的工作线程来处理连接,将接受的套接字作为参数传递。一旦连接被接受,就为它创建一个新的线程,然而主线程将再次循环,用相同的连接创建另一个套接字并创建另一个重复的线程。SocketServer保持接受相同的连接。为同一连接创建多个线程
主线程正在等待连接。
public void run(){
while(Tester.serverStatus != "quit"){
try {
Socket clientSocket = serverSocket.accept();
new Thread(new Worker(clientSocket)).start();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
this.stop();
} catch (IOException e) {
e.printStackTrace();
}
return;
}
public void stop() throws IOException{
serverSocket.close();
return;
}
工作线程伪
public void run(){
InputStream input = clientSocket.getInputStream();
//read from stream, validate request and setup the response in a byte array
input.close();
DataOutputStream output = new DataOutputStream(clientSocket.getOutputStream());
output.write(responseByteArray);
output.flush();
output.close();
clientSocket.close();
return;
}
任何想法,为什么accept()方法不被阻挡的第一连接被接受后?它只是继续使用相同的Socket创建重复的工作线程。
谢谢
用套接字API创建完全重复的连接是不太可能的。你确定你没有围绕'connect'调用客户端?用'netstat'检查连接源端口号。 –