Question

ServerSocket to be used with multi clients we attach separate thread for each client to to work probably,but the problem is the connection works fine and accept all clients but only serve last connection. So is't a problem or this is normal.

Server Code:

   ServerSocket serverSocket=null;
    Socket client;
        System.out.println("Establishing Connection. Please wait...");
   try{

           serverSocket =new ServerSocket(58342);            
           System.out.println("Serever Started.");
       }catch(Exception e)
       {
           System.out.println(e.getMessage());
       }

        while (true) {
                try{
             client = serverSocket.accept();
                     new ClientThread(client).start();
                }catch(Exception e)
                {
                    String err=e.getMessage();
                    if(err == null)
                    {
                       break;
                    }else{
                        System.out.println(e.getMessage());
                    }
                }

        }

ClientThread

public class ClientThread extends Thread{

    private static Socket client;
    private static String line="";
    private static DataInputStream input = null;
    private static DataOutputStream output = null;

    public ClientThread(Socket serv)
    {
      try {
            client =serv;
            input=new DataInputStream(client.getInputStream());
            output=new DataOutputStream(client.getOutputStream());
            System.out.println("New Client Connected to port:"+
                    client.getPort());
            } catch (Exception e) {
                    System.out.println(e.getMessage());
            }       
    }
}
Était-ce utile?

La solution

All of your variables in your ClientThread are static!!

This means that they are shared across all instances of ClientThread. So they are overwritten each time you create a new ClientThread.

Remove the static and you should be fine.

Looks to me like you might need to read some documentation.

Autres conseils

You must be doing I/O in the constructor of ClientThread.

Don't.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top