Python socket粘包问题及精确传输案例分析如何具体实施?
- 内容介绍
- 文章标签
- 相关推荐
本文共计962个文字,预计阅读时间需要4分钟。
原文:本文字例讲述了Python+socket连接中的粘包、精确传输问题。分享给大众参考,具体如下:粘包:发生原因:当调用send的时,数据并没有即时发送给客户端的。而是放在了系统的发送缓冲区中。当系统处理完毕后,再发送给客户端。
本文实例讲述了Python socket连接中的粘包、精确传输问题。分享给大家供大家参考,具体如下:
粘包:
-
发生原因:
当调用send的时候,数据并不是即时发给客户端的。而是放到了系统的socket发送缓冲区里,等缓冲区满了、或者数据等待超时了,数据才会发送,所以有时候发送太快的话,前一份数据还没有传给客户端,那么这份数据和上一份数据一起发给客户端的时候就会造成“粘包” 。
-
解决方案:
解决根源的思想是避免不同段的数据一起发送。
- 方案1:前一段数据send完后,等待一段时间再send第二段数据。缺点:时间效率低,而且也无法完全避免问题
- 方案2:握手机制:前一段数据send完后,尝试recv,等待客户端回应,确认第一段数据发送完后,再send第二段数据。
本文共计962个文字,预计阅读时间需要4分钟。
原文:本文字例讲述了Python+socket连接中的粘包、精确传输问题。分享给大众参考,具体如下:粘包:发生原因:当调用send的时,数据并没有即时发送给客户端的。而是放在了系统的发送缓冲区中。当系统处理完毕后,再发送给客户端。
本文实例讲述了Python socket连接中的粘包、精确传输问题。分享给大家供大家参考,具体如下:
粘包:
-
发生原因:
当调用send的时候,数据并不是即时发给客户端的。而是放到了系统的socket发送缓冲区里,等缓冲区满了、或者数据等待超时了,数据才会发送,所以有时候发送太快的话,前一份数据还没有传给客户端,那么这份数据和上一份数据一起发给客户端的时候就会造成“粘包” 。
-
解决方案:
解决根源的思想是避免不同段的数据一起发送。
- 方案1:前一段数据send完后,等待一段时间再send第二段数据。缺点:时间效率低,而且也无法完全避免问题
- 方案2:握手机制:前一段数据send完后,尝试recv,等待客户端回应,确认第一段数据发送完后,再send第二段数据。

