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的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
Python采用Django开发自己的博客系统
Sep 29 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Python开发的HTTP库requests详解
Aug 29 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
python多继承(钻石继承)问题和解决方法简单示例
Oct 21 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 15 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
selenium切换标签页解决get超时问题的完整代码
Aug 30 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
Python遍历numpy数组的实例
2018/04/04 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Python可以实现栈的结构吗
2020/05/27 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
经管应届生求职信
2013/11/17 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
golang slice元素去重操作
2021/04/30 Golang
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python