python3 tcp黏包情况二

发送数据时间间隔很短,数据也很小,会合到一起,产生粘包。

# TCP黏包现象_server.py
import socket
import time


sk = socket.socket()
sk.bind(("127.0.0.1", 8889))
sk.listen()
conn, address = sk.accept()
time.sleep(10)  # 先让程序睡10秒,目的是制造黏包机会
msg = conn.recv(1024)  # 这里很容易的就会产生黏包,客户端第一次和第二次发送的消息数据,会黏在一起。
print("来自客户端的消息:", msg.decode("utf-8"))
send_msg = input(">>>:").strip()
conn.send(send_msg.encode("utf-8"))
# TCP黏包现象_client.py
import socket


sk = socket.socket()
sk.connect(("127.0.0.1", 8889))
send_msg = input(">>>:").strip()
sk.send(send_msg.encode("utf-8"))  # 客户端第一次发送消息给服务端
send_msg = input(">>>:").strip()
sk.send(send_msg.encode("utf-8"))  # 客户端第二次发送消息给服务端
recv_msg = sk.recv(1024)
print("来自服务端的消息:", recv_msg.decode("utf-8"))

注意:

  1、先启动服务端,再启动客户端。

  2、根据程序写的谁先发送谁先接收的顺序,上述程序是,客户端先连续发送两个消息,服务端会收到黏包后的数据。

原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10928348.html