java.io.IOException: Datagram can not accomodate message of size :xxx

  1. public void run() { 
  2.     byte[] buffer = new byte[16384];  
  3.     DatagramPacket packet = new DatagramPacket(buffer, buffer.length); 
  4.     try {  
  5.         for (;;) {  
  6.               
  7.             // pool正在关闭(shutdown)时不在接收数据  
  8.             if(!pool.isShutdown() && !pool.isTerminated()) {  
  9.                 mcastSocket.receive(packet);  
  10.                 pool.execute(new Handler(packet));  
  11.             } else {  
  12.                 LOG.info("JxtaMulticastSocketService is now shutdown.");  
  13.             }  
  14.                   
  15.         }  
  16.     } catch (IOException ex) {  
  17.         ex.printStackTrace();  
  18.         pool.shutdown();  
  19.     }  

------------------------------------------------------------------------------------

注意第一行和第二行,每次for循环,都使用同一个buffer,这样当接收数据时,会抛出异常。可以将buffer的声明放在for循环的里面。
原文地址:https://www.cnblogs.com/cuizhf/p/2174438.html