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中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
Jun 15 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
python中class的定义及使用教程
Sep 18 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
python中的对数log函数表示及用法
Dec 09 Python
史上最详细的Python打包成exe文件教程
Jan 17 Python
python lambda的使用详解
Feb 26 Python
Python多个MP4合成视频的实现方法
Jul 16 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原理之异常机制深入分析
2010/08/08 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
Nodejs之TCP服务端与客户端聊天程序详解
2017/07/07 NodeJs
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
Django中使用locals()函数的技巧
2015/07/16 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
怎样使用Python脚本日志功能
2016/08/14 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
python脚本开机自启的实现方法
2019/06/28 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
银行门卫岗位职责
2013/12/29 职场文书
初三政治教学反思
2014/01/30 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server