65507也好,65527也好,65527个Byte,这么小,有什么鬼用呢?

来源:3-2 UDP核心API讲解

全是甘货

2018-11-26

如题,UDP只能携带这么小的数据,有什么鬼用呢,请解答一下,谢谢

写回答

1回答

Qiujuer

2018-11-26

首先说说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的解决方案。

0
3
全是甘货
回复
Qiujuer
必须的!!
2018-11-27
共3条回复

Socket网络编程进阶与实战 系统掌握Socket核心技术

理论+实践,系统且深入掌握Socket核心技术,从容应对各种Socket应用场景的不二之选

2316 学习 · 476 问题

查看课程