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实现的阳历转阴历(农历)算法
Apr 25 Python
Python设置Socket代理及实现远程摄像头控制的例子
Nov 13 Python
详解python发送各类邮件的主要方法
Dec 22 Python
python模块之re正则表达式详解
Feb 03 Python
分析python动态规划的递归、非递归实现
Mar 04 Python
Python中的函数式编程:不可变的数据结构
Oct 08 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Django用户认证系统 组与权限解析
Aug 02 Python
使用遗传算法求二元函数的最小值
Feb 11 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
利用PyTorch实现VGG16教程
Jun 24 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 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
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
一篇不错的Python入门教程
2007/02/08 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
二手房购房协议书范本
2014/10/05 职场文书
关于远足的感想
2015/08/10 职场文书
Nginx 匹配方式
2022/05/15 Servers