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 相关文章推荐
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
May 06 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
python读取excel指定列数据并写入到新的excel方法
Jul 10 Python
python requests 测试代理ip是否生效
Jul 25 Python
Python3转换html到pdf的不同解决方案
Mar 11 Python
Python日期时间Time模块实例详解
Apr 15 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
python 制作本地应用搜索工具
Feb 27 Python
如何理解python接口自动化之logging日志模块
Jun 15 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
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
前端微信支付js代码
2016/07/25 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
python3中的md5加密实例
2018/05/29 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
python pygame实现方向键控制小球
2019/05/17 Python
使用Python封装excel操作指南
2021/01/29 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
求职信范文大全
2014/05/26 职场文书
总经理人事任命书
2014/06/05 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
活动费用申请报告
2015/05/15 职场文书
2016教师节感恩话语
2015/12/09 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技