python3 tcp的粘包现象和解决办法解析


Posted in Python onDecember 09, 2019

这篇文章主要介绍了python3 tcp的粘包现象和解决办法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

服务器端

import socket
sk = socket.socket()
sk.bind(("127.0.0.1", 6666))
sk.listen()
conn, address = sk.accept()
def my_send(msg):
  bs = msg.encode("utf-8")
  len_str = format(len(bs), "04d") # 定长4位
  conn.send(len_str.encode("utf-8"))
  conn.send(bs)
my_send(input(">>>:").strip())
my_send(input(">>>:").strip())

客户端

import socket
import time

sk = socket.socket()
sk.connect(("127.0.0.1", 6666))

time.sleep(10) # 制造粘包情况
msg = sk.recv(1024).decode("utf-8") # 粘包现象
print(msg)

执行结果:

0004aaaa0003bbb

有粘包的现象。

解决粘包,客户端代码调整

import socket
import time
sk = socket.socket()
sk.connect(("127.0.0.1", 6666))
time.sleep(10)
def my_recv():
  len_str = int(sk.recv(4).decode("utf-8"))
  msg = sk.recv(len_str)
  print(f"来自服务端的消息:{msg.decode('utf-8')}")
my_recv()
my_recv()

执行结果:

来自服务端的消息:aaaa
来自服务端的消息:bbb

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中for循环详解
Jan 17 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
python多进程和多线程究竟谁更快(详解)
May 29 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
python实现银行管理系统
Oct 25 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
python中return不返回值的问题解析
Jul 22 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
宝塔更新Python及Flask项目的部署
Apr 11 Python
python绘制规则网络图形实例
Dec 09 #Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 #Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 #Python
Python二次规划和线性规划使用实例
Dec 09 #Python
Python Numpy数组扩展repeat和tile使用实例解析
Dec 09 #Python
如何将 awk 脚本移植到 Python
Dec 09 #Python
Python 读取 YUV(NV12) 视频文件实例
Dec 09 #Python
You might like
Yii分页用法实例详解
2014/12/04 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
jQuery $.each的用法说明
2010/03/22 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
Python面向对象特殊成员
2017/04/24 Python
Python实现的计算器功能示例
2018/04/26 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
农林经济管理专业自荐信
2014/09/01 职场文书
个人创业事迹材料
2014/12/30 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
办公室规章制度范本
2015/08/04 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书