java NIO非阻塞Udp 案例(服务器端测试丢包率)

需求:用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));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值