繁体   English   中英

具有多客户端的ServerSocket

[英]ServerSocket with multi clients

要与多个客户端一起使用的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());
                    }
                }

        }

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

您的ClientThread中的所有变量都是static

这意味着它们ClientThread所有实例之间共享 因此,每次您创建new ClientThread时,它们都会被覆盖。

去除static ,你应该没事。

在我看来,您可能需要阅读一些文档

您必须在ClientThread的构造函数中进行I / O。

别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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