我目前正在尝试创建多线程Java套接字服务器。
我可以在客户端中使用“ ID; MESSAGE;”发送“私人”消息。
消息到达正确的客户端,但是问题在于服务器始终显示所有消息都来自同一客户端(客户端ID 0),但不是。
这是我的服务器http://pastebin.com/Dzh5Ynvj
服务器输出
21:02:55 [DSS-Server] [Client#0] connected.
21:02:58 [DSS-Server] [Client#1] connected.
21:13:11 [DSS-Server] [Client#0] > 0;This is send from client 0
21:13:18 [DSS-Server] [Client#0] > 1;This also
21:13:30 [DSS-Server] [Client#0] > 0;But this comes from client 1
最佳答案
在您的ClientHandler
代码中,您尚未将id
参数分配给类的id
成员。
public ClientHandler(Socket client, int id) {
this.id = id; // ADD THIS LINE
try {
//Get BufferedReader from client
this.client = client;
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}
在
this.id = id;
构造函数中添加ClientHandler
。那应该做。