码迷,mamicode.com
首页 > 编程语言 > 详细

python-tcp粘包

时间:2018-06-07 22:57:36      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:udp   长度   开启   pytho   传输   size   连接   数据流   一个   

tcp有粘包,udp无粘包,将超出buffer_size数据丢弃。udp只负责发数据,不管服务端有没有开启(不依赖于服务端),一样运行不报错,所以不可靠。

tcp面向流,udp面向消息报文,每个udp段都是一条消息。应用程序必须以消息为单位提取数据,不能一次提取任意字节大小的数据。

udp不需建连接,所以能提供高效率服务。

tcp是基于数据流的(不知道起始位置和结束位置),于是收发的消息不能为空,需要c/s两端添加空白消息处理机制,防止程序卡主,而udp是基于数据报的,即便输入的是空格,那也不是空消息,因为udp协议会封装上消息头。

粘包两种情况:

1)包小:面向流的通信是没有边界保护的。tcp会将多次时间间隔小,数据量小的数据合成一个数据,当成一个包进行传输,这样客户端只能收到一个包。

2)包大:接收端从缓存池接收小于包长度的固定数据大小,剩余数据留在缓存池,等待第二次接收发送端第二次发送的数据时接收到,造成粘包。

 

python-tcp粘包

标签:udp   长度   开启   pytho   传输   size   连接   数据流   一个   

原文地址:https://www.cnblogs.com/benchdog/p/9153052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!