Netty实战二-实现UDP的单播和广播

本文详细介绍了使用Netty实现UDP单播和广播的步骤,包括AddressedEnvelope接口、DefaultAddressedEnvelope类、DatagramPacket类、DatagramChannel接口以及NioDatagramChannel的使用。通过实例展示了如何创建AnswerHandler、UdpAnswerSide、QuestoinHandler、UdpQuestionSide等类来处理UDP通信,以及如何进行日志广播。示例代码涵盖了客户端和服务器端的交互过程。
摘要由CSDN通过智能技术生成

================

Netty里已经帮我们封装好了UDP相关的实现类。使用起来也非常方便

1、AddressedEnvelope 接口

interface AddressedEnvelope<M, A extends SocketAddress> extends ReferenceCounted

定义一个消息,其包装了另一个消息并带有发送者和接收者地址。其中M 是消息类型;A 是地址类型

2、DefaultAddressedEnvelope类

class DefaultAddressedEnvelope<M, A extends SocketAddress>implements AddressedEnvelope<M,A>

提供了interface AddressedEnvelope的默认实现

3、DatagramPacket 类

class DatagramPacket extends DefaultAddressedEnvelope<ByteBuf, InetSocketAddress> implements ByteBufHolder

扩展了DefaultAddressedEnvelope 以使用ByteBuf 作为消息数据容器。DatagramPacket是final类不能被继承,只能被使用。

他有三个重要方法

content() 来获取消息内容

sender() 来获取发送者的消息

recipient() 来获取接收者的消息。

4、DatagramChannel 接口

interface DatagramChannel extends Channel

扩展了Netty 的Channel 抽象以支持UDP 的多播组管理

5、NioDatagramChannel

class NioDatagramChannel extends AbstractNioMessageChannel implements DatagramChannel

定义了一个能够发送和接收Addressed-Envelope 消息的Channel 类型

Netty 的DatagramPacket 是一个简单的消息容器,DatagramChannel 实现用它来和远程节点通信。类似于在我们先前的类比中的明信片,它包含了接收者(和可选的发送者)的地址以及消息的有效负载本身。

三、Netty实现UDP单播

==============

1、 AnswerHandler

定义消息应答服务处理类,改类主要随机从字符串数组中选择一个发送给客户端

/**

  • 作者:DarkKIng

  • 类说明:应答处理Handler

*/

public class AnswerHandler extends

SimpleChannelInboundHandler {

/应答的具体内容从常量字符串数组中取得,由nextQuote方法随机获取/

private static final String[] DICTIONARY = {

“一个男生暗恋一个女生很久了。一天自习课上,男生偷偷的传了小纸条给女生,上面写着“其实我注意你很久了”。不一会儿,女生传了另一张纸条,男生心急火燎的打开一看“拜托你不要告诉老师,我保证以后再也不嗑瓜子了”。。。。。。男生一脸懵逼”,

“昨天因为一件事骂儿子,说你妈妈是猪

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值