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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
Python开发实例分享bt种子爬虫程序和种子解析
May 21 Python
python实现bucket排序算法实例分析
May 04 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
python:print格式化输出到文件的实例
May 14 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
python读取图片任意范围区域
Jan 23 Python
Python3最长回文子串算法示例
Mar 04 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
Django 解决上传文件时,request.FILES为空的问题
May 20 Python
python文本处理的方案(结巴分词并去除符号)
May 26 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 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
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
二行代码解决全部网页木马
2008/03/28 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
全面解析JavaScript中“&&”和“||”操作符(总结篇)
2016/07/18 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
python3 xpath和requests应用详解
2020/03/06 Python
python logging.info在终端没输出的解决
2020/05/12 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
高三毕业生自我鉴定
2013/12/20 职场文书
化学工程专业求职信
2014/08/10 职场文书
海洋科学专业求职信
2014/08/10 职场文书
上诉状格式
2015/05/23 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android