0

複数のクライアントで使用する ServerSocket は、各クライアントが動作するように個別のスレッドをアタッチしますが、問題は、接続が正常に動作し、すべてのクライアントを受け入れるが、最後の接続のみを提供することです。それで問題ないか、これは正常です。

サーバーコード:

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

        }

クライアントスレッド

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

2 に答える 2

0

ClientThread のコンストラクターで I/O を実行する必要があります。

しないでください。

于 2013-04-21T23:06:57.177 に答える