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