我目前正在尝试创建多线程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。那应该做。

08-05 10:14
查看更多