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使用calendar输出指定年份全年日历的方法
Apr 04 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
Apr 28 Python
Python实现登录人人网并抓取新鲜事的方法
May 11 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
Python Socket实现简单TCP Server/client功能示例
Aug 05 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
Python3字符串encode与decode的讲解
Apr 02 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
May 27 Python
flask开启多线程的具体方法
Aug 02 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 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/01 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
详解Python中的正则表达式的用法
2015/04/09 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
大学生党课思想汇报
2013/12/29 职场文书
检察官就职演讲稿
2014/01/13 职场文书
总经理岗位职责描述
2014/02/08 职场文书
消防先进事迹材料
2014/02/10 职场文书
研发工程师岗位职责
2014/04/28 职场文书
博士生专家推荐信
2014/09/26 职场文书
初中教师个人总结
2015/02/10 职场文书
2015年女生节活动总结
2015/02/27 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
寻找成龙观后感
2015/06/12 职场文书
外出考察学习心得体会
2016/01/18 职场文书
Django操作cookie的实现
2021/05/26 Python
Python初学者必备的文件读写指南
2021/06/23 Python
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS
spring boot实现文件上传
2022/08/14 Java/Android