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
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。