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代码打包为jar软件的简单方法
Aug 04 Python
python线程中同步锁详解
Apr 27 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
Python 通过打码平台实现验证码的实现
May 13 Python
django-allauth入门学习和使用详解
Jul 03 Python
Python寻找路径和查找文件路径的示例
Jul 10 Python
python3使用GUI统计代码量
Sep 18 Python
TensorFlow 显存使用机制详解
Feb 03 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
Apr 14 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 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框架安装简明教程
2020/05/15 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
jquery密码强度校验
2015/12/02 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
收银出纳员岗位职责
2014/02/23 职场文书
初三开学计划书
2014/04/27 职场文书
另类冲刺标语
2014/06/24 职场文书
体育委员竞选稿
2015/11/21 职场文书
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
js作用域及作用域链工作引擎
2022/07/07 Javascript