首页 > 其他分享 >tcp的粘包现象

tcp的粘包现象

时间:2023-02-21 20:35:23浏览次数:38  
标签:sk 字节 tcp 粘包 content 现象 长度

粘包现象        只出现在tcp协议中  多条消息之间没有边界,并且还有一大堆优化算法
发送端:两条消息很短并且发送的间隔很短
接收端:接收消息不及时

解决粘包问题的本质:设置边界


计算即将要发送的数据的长度
通过struct模块把长度转换成固定的4个字节
发送4个字节的长度

接受4个字节
再使用struct.unpack把4个字节转换成数字
这个数字就是即将要接受的数据的长度
再根据长度接收数据
两条数据就不会黏在一起了

服务端:
import socketserver
import time

class Myserver(socketserver.BaseRequestHandler):
    def handle(self):
        # print(self.request)
        conn = self.request
        while True:
            try:
                content = conn.recv(1024).decode("utf-8")
                conn.send(content.upper().encode("utf-8"))
                time.sleep(0.5)
            except Exception:
                break
server = socketserver.ThreadingTCPServer(("127.0.0.1", 8080), Myserver)
server.serve_forever()

 

客户端:

import socket

sk = socket.socket()
sk.connect(("127.0.0.1", 8080))

while True:
    sk.send(b"hello")
    content = sk.recv(1024).decode("utf-8")
    print(content)

 

标签:sk,字节,tcp,粘包,content,现象,长度
From: https://www.cnblogs.com/moon3496694/p/17142292.html

相关文章

  • tcpdump用法
    超详细的网络抓包神器tcpdump使用指南https://juejin.cn/post/68449040841687695491.基本语法和使用方法tcpdump的常用参数如下:$tcpdump-ieth0-nn-s0-vport80-......
  • TCP与UDP简述
    什么是TCPTCP(TransmissionControlProtocol传输控制协议)是一种面向连接的,可靠的,基于字节流的传输通信协议。1、tcp(TransmissionControlProtocol传输控制协议)2、传......
  • Modbus TCP / BACnet IP 网关BMT-370
    基本说明:BMT-370是BACnetIP从站协议与ModbusTCP主站协议转换的通信网关,可以实现BACnetIP主站与多个ModbusTCP从站之间的数据通信。同时该网关的以太网端支持双以太网......
  • TCP/IP协议
    一、是什么TCP/IP,传输控制协议/网际协议,是指能够在多个不同网络间实现信息传输的协议簇TCP(传输控制协议)一种面向连接的、可靠的、基于字节流的传输层通信协议IP(网际......
  • UDP 和 TCP? 区别? 应用场景?
    一、UDPUDP(UserDatagramProtocol),用户数据包协议,是一个简单的面向数据报的通信协议,即对应用层交下来的报文,不合并,不拆分,只是在其上面加上首部后就交给了下面的网络层也......
  • TCP编程之网卡信息获取和域名解析
    1.TCP/IP简介TCP/IP协议源于1969年,是针对Internet开发的一种体系结构和协议标准,目的在于解决异种计算机网络的通信问题。使得网络在互联时能为用户提供一种通用、一致的通信......
  • 基于雾凇冰物理现象优化算法RIME求解单目标优化问题附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • Mina Tcp服务器开发
    因项目架构需求,需要开发一个MinaTcp服务器。我的Mina服务器是JavawinForm,这与在web项目使用会有少许不同。1、Maven依赖<dependency><groupId>o......
  • Angular SSR 和 PWA 结合起来使用的一些现象观察
    观察到的现象部署SSR服务器,浏览器端发起请求,请求10次,发现只有第一次请求被SSR服务器处理了。其他9次请求没有落到SSR服务器上。结论第一个页面访问是由源站(SSR/......
  • 记录一个有意思c++现象
      即使类没有带参初始化函数依然可以给对象数组赋值,而且有多个成员时是每个对象每个成员逐个赋值的。====================  也可以这样两层赋值。============......