public void run() { byte[] buffer = new byte[16384]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); try { for (;;) { // pool正在关闭(shutdown)时不在接收数据 if(!pool.isShutdown() && !pool.isTerminated()) { mcastSocket.receive(packet); pool.execute(new Handler(packet)); } else { LOG.info("JxtaMulticastSocketService is now shutdown."); } } } catch (IOException ex) { ex.printStackTrace(); pool.shutdown(); } }
------------------------------------------------------------------------------------
注意第一行和第二行,每次for循环,都使用同一个buffer,这样当接收数据时,会抛出异常。可以将buffer的声明放在for循环的里面。
转载于:https://www.cnblogs.com/cuizhf/archive/2011/09/13/2174438.html
相关资源:JAVA上百实例源码以及开源项目