python-tcp粘包

Posted benchdog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-tcp粘包相关的知识,希望对你有一定的参考价值。

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

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

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

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

粘包两种情况:

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

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

 

以上是关于python-tcp粘包的主要内容,如果未能解决你的问题,请参考以下文章

面试官:什么是TCP粘包?粘包原因?如何解决?

面试官:什么是TCP粘包?粘包原因?如何解决?

面试官:什么是TCP粘包?粘包原因?如何解决?

TCP粘包和拆包

TCP“粘包”是什么?

TCP粘包