如何在java套接字中侦听通过多个客户端发送的数据端口

如何在java套接字中侦听通过多个客户端发送的数据端口,java,sockets,Java,Sockets,我有多个客户端将数据发送到相同的预定义IP地址和端口号。我正在尝试使用java套接字。我有一个用户代码(服务器),它接受来自多个客户端的数据。但我的消费者代码只监听第一个客户机数据。它忽略了第二个 服务器:- public class consumer { public static void main(String[] args) throws IOException { ServerSocket serverScoket=new ServerSocket(3333,

我有多个客户端将数据发送到相同的预定义IP地址和端口号。我正在尝试使用java套接字。我有一个用户代码(服务器),它接受来自多个客户端的数据。但我的消费者代码只监听第一个客户机数据。它忽略了第二个

服务器:-

public class consumer {

    public static void main(String[] args) throws IOException {
        ServerSocket serverScoket=new ServerSocket(3333,10);        
        Socket socket=serverScoket.accept();  
        DataInputStream din=new DataInputStream(socket.getInputStream());     
        while(true){  
            String str="";
            str=din.readUTF();  
        if(str.length()>0)
        System.out.println("client says: "+str);  
        }  
    }
}
第一客户:-

public class uploader1 {

    public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException {
        // TODO Auto-generated method stub
        Socket s=new Socket("localhost",3333);  
        DataOutputStream dout=new DataOutputStream(s.getOutputStream());  
        int i = 0;
        while(i++<15){          
            Thread.sleep(1000); 
            dout.writeUTF("u1 "+i);  
            dout.flush();  
        }  

        dout.close();  
        s.close(); 
    }
}
public class uploader2 {

    public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException {
        // TODO Auto-generated method stub
        Socket s=new Socket("localhost",3333);  
        DataOutputStream dout=new DataOutputStream(s.getOutputStream());   
        int i = 0;
        while(i++<15){          
            Thread.sleep(1000);
            dout.writeUTF("u2 "+i);  
            dout.flush();   
        }         
        dout.close();  
        s.close(); 
    }
}

我想知道我是否可以通过java套接字编程实现它,或者我需要找到其他方法。请建议。

因为您的服务器仅使用第一个连接的客户端的套接字。您需要将两个接受的套接字存储到一个数组中,然后while循环应该考虑这两个套接字。然后两者都会阻塞,所以您需要使套接字非阻塞或使用多线程。我能够从服务器获得响应!在多个客户端的情况下也是如此。它的处理按顺序接收数据。如果客户端数量增加到数千,服务器将在延迟时间获取数据(因为它正在寻找相同的端口),如果是,将如何处理。通过多线程,正如@TreytenCarey已经告诉您的。请参阅Java教程的“自定义网络”一章。