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函数形参用法实例分析
Aug 04 Python
Python解析树及树的遍历
Feb 03 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
python requests使用socks5的例子
Jul 25 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
Python with标签使用方法解析
Jan 17 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
在python中实现导入一个需要传参的模块
May 12 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创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
JavaScript 变量命名规则
2009/09/23 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
js实现进度条的方法
2015/02/13 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
Python之list对应元素求和的方法
2018/06/28 Python
Python3 修改默认环境的方法
2019/02/16 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python3实现单目标粒子群算法
2019/11/14 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Python json格式化打印实现过程解析
2020/07/21 Python
Java工程师面试集锦之Spring框架
2013/06/16 面试题
经典c++面试题五
2014/12/17 面试题
大学生最常用的自我评价
2013/12/07 职场文书
七一党建活动方案
2014/01/28 职场文书
工作决心书范文
2014/03/11 职场文书
绿色出行口号
2014/06/18 职场文书
贷款委托书
2014/08/01 职场文书
白酒营销策划方案
2014/08/17 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
销售会议开幕词
2015/01/28 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
python 提取html文本的方法
2021/05/20 Python