python3 tcp的粘包现象和解决办法解析
作者:lilyxiaoyy 发布时间:2022-08-02 02:22:53
标签:python,3,tcp,粘包,解决
这篇文章主要介绍了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
来源:https://www.cnblogs.com/lilyxiaoyy/p/12002690.html
0
投稿
猜你喜欢
- 一维插值插值不同于拟合。插值函数经过样本点,拟合函数一般基于最小二乘法尽量靠近所有样本点穿过。常见插值方法有拉格朗日插值法、分段插值法、样条
- 本文实例讲述了Python实现115网盘自动下载的方法。分享给大家供大家参考。具体实现方法如下:实例中的1.txt,是网页http://bb
- Beautiful Soup 库一般被称为bs4库,支持Python3,是我们写爬虫非常好的第三方库。因用起来十分的简便流畅。所以也被人叫做
- TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它
- Python 在命令行解析方面给出了类似的几个选择:自己解析, 自给自足(batteries-included)的方式,以及大量的
- 目录一、简单文本类型数据二、复杂型表格提取三、图片型表格提取大家好,从PDF中提取信息是办公场景中经常需要用到的操作,也是经常又读者在后台问
- 写在前面python-docx 不支持 doc 文档,一定要注意该点,如果使用 doc 文档,需要提前将其用 Word 相关软件转换为 do
- 一个几百行代码做出http/https代理服务器的脚本,启动即可做http https透明代理使用python proxy.py 8992使
- 本篇阅读的代码片段来自于30-seconds-of-python。1. count_bydef count_by(arr, fn=lambd
- 飞机大战(Python)代码分为两个python文件,工具类和主类,需要安装pygame模块,能完美运行(网上好多不完整的,调试得心累。实现
- 昨天在做一道CTF题的时候碰到了一个图片异或的问题,操作大概如下:将一个图片读入,然后每字节进行异或操作,核心代码可简化为以下:#codin
- Gradio 是做什么的?先决条件:Gradio 需要 Python 3.7 或更高版本,仅此而已!gradio.app/quickstar
- 列表生成式可以使用列表生成式生成 列表元素。例如:列表还支持 if … else 与 for 循环组合的单行表达式进行
- 前言: 在爬虫过程中,我们可能需要重复的爬取同一个网站,为了避免重复的数据存入我们的数据库中 通过实现增量去重 去解决这一问题 本文还针对了
- 在开发中有些敏感接口,例如用户余额提现接口,需要考虑在并 * 况下接口是否会发生问题。如果用户将自己的多条提现请求同时发送到服务器,代码能否扛
- 摘要:Oracle和微软都是数据库方面的大厂商,采用两家的产品的企业也不少。今天这篇文章为大家对比Oracle和SQLServer的镜像。标
- 这片文章只对本地存储方法做介绍,若要查看本地存储组件使用方法的介绍请稍等。本地数据持久化(或者也叫做浏览器本地存储)是一种在浏览器中长久保存
- 1.delete不能使自动编号返回为起始值。但是truncate能使自动增长的列的值返回为默认的种子 2.truncate只能一次清空,不能
- 数据结构数据结构的概念很好理解,就是用来将数据组织在一起的结构。换句话说,数据结构是用来存储一系列关联数据的东西。在Python中有四种内建
- 本文实例讲述了python的json中方法及jsonpath模块用法。分享给大家供大家参考,具体如下:什么是jsonJSON(JavaScr