默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
你对UDP协议的理解可能有点出入,建议看看《TCP/IP详解》里有关UDP章节:http://docs.52im.net/extend/docs/book/tcpip/vol1/11/

你看到的MINA里的IoSession这个东西,其实跟UDP协议本身没有任何关系,试想一下,你的客户端连接到服务端后,你服务端要向某个客户端发送消息的话,是不是就得要找到这个客户端的IP+端口号这个东西?MINA里的iOSession就差不多是这个作用,只是封装了一下,看起来很吊而已。

UDP的数据收发都是以一个包为单位,这也是为什么你看到的比如Java里的UDP数据都是以Package(就是“包”这个意思)为单位进行发送的,这也是UDP协议本身的定义就是这样。所以,无论是MINA还是Netty,理论上不存在粘包的情况(TCP协议才会有这个问题),UDP只会发生要么收到这个包,要么没有收到,不存在只收到一部分的情况,退一万步讲,如果真不完整,从网络底层就会被丢弃,也达不了你应用层的代码。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部