Netty知识点(1):实现UDP单播

        单播意味着点对点发送信息,要注意点为:

(1)连接协议规定为NioDatagramChannel协议。

(2)需要将UDP请求报文以DatagramPacket打包发送给接收端。

(3)由于UDP是不保证传输完整以及安全,或者正确,重点在意效率,不需要关注接收端是否有收到报文,所以接收端能否能收到数据,是依据接收是否有回复应答报文进行判断,所以设置等待时间进行接收(阻塞),等待时间过后关闭信道,不论是否有应答。

简单实现伪代码:

发送端:

b.group(group)
        /*由于我们用的是UDP协议,所以要用NioDatagramChannel来创建*/
        .channel(NioDatagramChannel.class)
        .handler(new QuestoinHandler());
//不需要建立连接
Channel ch = b.bind(0).sync().channel();
//将UDP请求的报文以DatagramPacket打包发送给接受端
ch.writeAndFlush(
        new DatagramPacket(
                Unpooled.copiedBuffer(QUESTION,
                        CharsetUtil.UTF_8),
                new InetSocketAddress("127.0.0.1",
                        port)))
        .sync();
//不知道接收端能否收到报文,也不知道能否收到接收端的应答报文
// 所以等待15秒后,不再等待,关闭通信
if(!ch.closeFuture().await(15000)){
    System.out.println("查询超时!");
}

应答端:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值