================
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 = {
“一个男生暗恋一个女生很久了。一天自习课上,男生偷偷的传了小纸条给女生,上面写着“其实我注意你很久了”。不一会儿,女生传了另一张纸条,男生心急火燎的打开一看“拜托你不要告诉老师,我保证以后再也不嗑瓜子了”。。。。。。男生一脸懵逼”,
“昨天因为一件事骂儿子,说你妈妈是猪