简体   繁体   中英

Get client id using multithreaded java server

I'm currently trying to create a multithreaded java socket server. I can send "private" messages using "ID;MESSAGE; in my clients.

The messages arrive at the right client but the problem is that the server always displays that all messages come from the same client (client id 0), but they don't.

Here's my Server http://pastebin.com/Dzh5Ynvj

Server output

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

In your ClientHandler code, you have not assigned the id parameter to the id member of your class.

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();
    }
}

Add this.id = id; in your ClientHandler constructor. That should do it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM