我在server端(端口8888)接收UDP包
当一个client端(端口2222)发送UDP包server收到,数据正确没有问题。
但是另一个client端(端口3333)向server端(端口8888,与原来的一样)发送的UDP包,server收到后与发送的数据不一致,这是为什么啊?class Server {
   DatagramSocket ds = new DatagramSocket(8888);
   byte[] buf = new byte[1024];
   DatagramPacket dp = new DatagramPacket(buf, buf.length);
   while(ds!=null) {
      ds.receive(dp);
      dp.getData();
      //显示数据;
   }
}class Client1 {
   DatagramSocket ds = new DatagramSocket(2222);
   byte[] b = new byte[1024];
   DatagramPacket dp = new DatagramPacket(b, b.length, new InetSocketAddress("127.0.0.1",8888));
   ds.send(dp);
}class Client2 {
   DatagramSocket ds = new DatagramSocket(3333);
   byte[] b = new byte[1024];
   DatagramPacket dp = new DatagramPacket(b, b.length, new InetSocketAddress("127.0.0.1",8888));
   ds.send(dp);
}第一次server接受到client1的数据是正确滴
但第二次server接受到client2的数据包不对
请给解释下?谢谢大家

解决方案 »

  1.   

    UDP信息传递比较快但不提供可靠性保证  
    在数据传输时用户无法知道数据能否正确到达目的地主机也无法确定到达的顺序是否和发送的顺序相同
    如果需要用于较快速的传输信息能容忍小的错误你可以考虑使用UDP
    但你如果需要数据必须绝对准确地到达目的地建议不要使用