开发者社区> 问答> 正文

关于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的话 同时有两个阻塞 那一个客户端发送一个数据出来 这两个阻塞 是不是就都可以收到了啊

展开
收起
蛮大人123 2016-03-10 14:05:05 3475 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    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
        }
    }
    2019-07-17 18:57:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
网站/服务器取证 实践与挑战 立即下载
ECS计算与存储分离架构实践 立即下载
ECS快储存加密技术 立即下载