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爬虫
Dec 25 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
May 25 Python
Python作用域用法实例详解
Mar 15 Python
详解python之简单主机批量管理工具
Jan 27 Python
动态规划之矩阵连乘问题Python实现方法
Nov 27 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
Python3 requests模块如何模仿浏览器及代理
Jun 15 Python
python pandas dataframe 去重函数的具体使用
Jul 20 Python
python openCV自制绘画板
Oct 27 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/10/23 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
php简单统计中文个数的方法
2016/09/30 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
Python内置函数之filter map reduce介绍
2014/11/30 Python
python实现中文分词FMM算法实例
2015/07/10 Python
python开发之函数定义实例分析
2015/11/12 Python
Python面向对象之继承代码详解
2018/01/29 Python
python 拼接文件路径的方法
2018/10/23 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
家长对小学生的评语
2014/01/28 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
大学同学聚会感言
2015/07/30 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
Python IO文件管理的具体使用
2022/03/20 Python
vue实力踩坑之push当前页无效
2022/04/10 Vue.js
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技