学习python课程第二十八天

 一.  什么是粘包现象 :

  须知: 只有TCP有粘包现象,UDP永远不会粘包. 这是socket收发消息的原理导致的.

  

  对于TCP协议发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能

  一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或

  说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是

  容易出现粘包问题的原因。

  UDP是面向消息的协议,每个UDP段都是一条消息,应用程序必须以消息为单位提取数据,不能一次提取任

  意字节的数据,这一点和TCP是很不同的。怎样定义消息呢?可以认为对方一次性write/send的数据为一个

  消息,需要明白的是当对方send一条信息的时候,无论底层怎样分段分片,TCP协议层会把构成整条消息

  的数据段排序完成后才呈现在内核缓冲区。

猜你喜欢

转载自www.cnblogs.com/lvyipin1/p/9943680.html