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 urlopen 使用小示例
Sep 06 Python
使用Python对Csv文件操作实例代码
May 12 Python
Python实现学校管理系统
Jan 11 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
python实现逐个读取txt字符并修改
Dec 24 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
django使用xadmin的全局配置详解
Nov 15 Python
flask实现验证码并验证功能
Dec 05 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
python导入库的具体方法
Jun 18 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 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检测用户语言的方法
2015/06/15 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
js获取url中"?"后面的字串方法
2014/05/15 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
vue实现拖拽效果
2019/12/23 Javascript
python中常用检测字符串相关函数汇总
2015/04/15 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
python将回车作为输入内容的实例
2018/06/23 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
python获取array中指定元素的示例
2019/11/26 Python
python不同系统中打开方法
2020/06/23 Python
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
电子专业毕业生自我鉴定
2014/01/22 职场文书
医院检讨书范文
2014/02/01 职场文书
教育技术职业规划范文
2014/03/04 职场文书
眼镜促销方案
2014/03/15 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
毕业生见习报告总结
2014/11/08 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
小马王观后感
2015/06/11 职场文书
股东协议书范本2016
2016/03/21 职场文书