首页 > 关于socket UDP通信中服务器端连接多个客户端的问题

关于socket UDP通信中服务器端连接多个客户端的问题

DatagramSocket service=new DatagramSocket(PORT);
while (true) {

                    byte data [] = new byte[1024];
                    packet =new DatagramPacket(data,data.length);
                    try {
                        service.receive(packet);
                        msg=new String(packet.getData(),packet.getOffset(),packet.getLength());                
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                

这样子形成阻塞之后 也只是能连接一个客户端 然后无限的接受下去 那得怎样才可以形成连接多个客户端 然后分别去接受他们的数据
想了很久 想了一个写法 不知道能不能可行
不知道这样写对不对
while(data-- > 0){ //data是要连接的客户端数

new kehuduan();

}
class kehuduan{

public kehuduan(){
    new Thread(){
        while(true){
            byte data [] = new byte[1024];
            packet =new DatagramPacket(data,data.length);
            try {
        service.receive(packet);
        msg=new String(packet.getData(),packet.getOffset(),packet.getLength());                
         } catch (Exception e) {
                        e.printStackTrace();
                   }

        }
    }.start();
}

}

这样写的话 如果要data那个数值是2的话 同时有两个阻塞 那一个客户端发送一个数据出来 这两个阻塞 是不是就都可以收到了啊


DatagramSocket service = new DatagramSocket(PORT);
while(true){
    service.receive(packet); //这个方法是阻塞的,所以没有建立连接就不会有下面的新处理线程
    new Thread(new Task(service)).start();
}
class Task implements Runnable {
    public Task(DatagramSocket service){}
    public void run(){
        handleService();
    }
    private void handleService(){
    //do your work here
    }
}

你是用Android端作为UDP服务器吗?但是你的代码却是客户端代码。

【热门文章】
【热门文章】