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标准库内置函数complex介绍
Nov 25 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
深入理解Python中range和xrange的区别
Nov 26 Python
Python random模块用法解析及简单示例
Dec 18 Python
对python添加模块路径的三种方法总结
Oct 16 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
May 10 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
python基于win32api实现键盘输入
Dec 09 Python
python 常用的异步框架汇总整理
Jun 18 Python
使用python绘制横竖条形图
Apr 21 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
Yii框架安装简明教程
2020/05/15 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
jquery实现简单实用的轮播器
2017/05/23 jQuery
微信小程序select下拉框实现效果
2019/05/15 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
python对离散变量的one-hot编码方法
2018/07/11 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
Django REST framework视图的用法
2019/01/16 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
春节活动策划方案
2014/01/24 职场文书
个人投资计划书
2014/05/01 职场文书
2014年宣传工作总结
2014/11/18 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
不同意离婚代理词
2015/05/23 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android