65507也好,65527也好,65527个Byte,这么小,有什么鬼用呢?
来源:3-2 UDP核心API讲解
全是甘货
2018-11-26
如题,UDP只能携带这么小的数据,有什么鬼用呢,请解答一下,谢谢
写回答
1回答
-
首先说说65507的问题:http://coding.imooc.com/learn/questiondetail/84872.html
PPT中有计算错误,当时忘记更正了。
然后来说说你的问题,在标准的UDP传输中,因为UDP包头的限制,所以数据部分只能发送65507个字节的数据,超出后你将得到类似如下的错误:
Operation not permitted, Message too long
但是这不等于UDP就没有作用,在实际的使用中,IM聊天的数据大小往往都小于该值;当发送文件或者文本数据大于该值的时候可以采取在业务层分片后再发送的方式进行发送即可。比如你有65509个数据那就分成2次发送:65507+2
当然这在接收方就需要知道规则,然后对数据进行组装,保证数据不出现粘包、丢包等情况。
而且有些语言可能会有2次封装,在发送的时候可能会允许大于65507个字节单次发送,但是在底层真实发送时也会进行拆分;因为Socket不是某个语言的,而是一种规范,适用于所有语言。
在课程的后面章节中也会讲解到粘包、丢包的解决方案,这些都是可以用于UDP的解决方案。
032018-11-27
相似问题