需求:用NIO接收部署在linux服务器上发送过来的信息条数。用来测试丢包率
datagramChannel = DatagramChannel.open();
datagramChannel.socket().setReceiveBufferSize(1024*100);
datagramChannel.configureBlocking(false);
datagramChannel.socket().bind(new InetSocketAddress(8999));
DefaultUdpNioCommunicationManager.selector = Selector.open();
datagramChannel.register(selector, SelectionKey.OP_READ);
while (true) {
try {
selectortemp.select();
Iterator<SelectionKey> ite = selectortemp.selectedKeys().iterator();
while (ite.hasNext()) {
SelectionKey key = (SelectionKey)ite.next();
ite.remove();
if (key.isReadable()) {
read(key);
}
}
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
datagramChannel=(DatagramChannel)key.channel();
datagramChannel.configureBlocking(false);
ByteBuffer buffer=ByteBuffer.allocate(1404);
buffer.clear();
SocketAddress dAddress=datagramChannel.receive(buffer);
int a=dAddress.toString().indexOf(":");
String port1=dAddress.toString().substring(a+1);
int port=Integer.parseInt(port1);
buffer.flip();
count++;
if(count > 10000){
System.out.println(this.dd+"收报数:"+count);
}
byte[] data =buffer.array();
int length=udpConfig.getReceivePacketLength();
threadPool.execute(new
UdpNioReceiveHandleRunnable(port,length,data,datagramChannel,threadPool));