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实现360皮肤按钮控件示例
Feb 21 Python
python中ConfigParse模块的用法
Sep 29 Python
深入解析Python中函数的参数与作用域
Mar 20 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
python迭代器常见用法实例分析
Nov 22 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
python字符串拼接+和join的区别详解
Dec 03 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
OpenCV-Python实现轮廓拟合
Jun 08 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
Jun 08 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把session写入数据库示例
2014/02/26 PHP
PHP常用技巧汇总
2016/03/04 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
JS常见问题整理(持续更新)
2013/08/06 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
详解webpack多页面配置记录
2018/01/22 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
python语言使用技巧分享
2016/05/31 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
Python银行系统实战源码
2019/10/25 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
彻底解决Python包下载慢问题
2020/11/15 Python
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
母亲七十大寿答谢词
2014/01/18 职场文书
个人求职信范文分享
2014/01/31 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
法人任命书范本
2014/06/04 职场文书
团拜会策划方案
2014/06/07 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
大学生受助感言
2015/08/01 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis
Java基础——Map集合
2022/04/01 Java/Android