在服务器端一般都是死循环 来监听一个端口。也是就 
while (isRunning) {   
  datagramSocket.receive(packet);   
                       

receive(packet) 这个方法是阻塞式的。我的疑问就是,当我接受到客户端发送过来的数据,并放在packet里后,然后我把这个DatagramPacket 对象 拿去处理的时候, 同时又有一个数据包过来,会不会第二次来的数据把第一次来的数据给覆盖了,从而造成 当我在使用第一次的DatagramPacket对象的时候,造成数据错误呢!

解决方案 »

  1.   

    楼主说的很对,所以,你应该这样:while (isRunning) {   
      buffer=new byte[SIZE];
      packet=new DatagramPacket(buffer,buffer.length);
      datagramSocket.receive(packet);                          

      

  2.   

    如果不启动线程处理,那么只有当下一次receive时才会JVM才会将第二个数据包的数据放入packet中。所以不存在覆盖问题。但是如果你启动线程对packet处理,主线程还调用receive则会覆盖