gpt4 book ai didi

Python 套接字 : how to only receive one message at a time

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:03 25 4
gpt4 key购买 nike

只是想了解套接字是如何工作的。我正在使用我发现的经过修改的测试选择服务器和客户端。这是服务器:

import socket

host = ''
port = 50000
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
client, address = s.accept()
running = 1
while running:
data = client.recv(size)
print("received: "+data + "\n")
if data:
client.send(data)
running = 0
else:
running = 0
client.close()

和客户:

import socket
import sys

host = 'localhost'
port = 50000
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
sys.stdout.write('%')

s.send("(Message1)")


while 1:
s.send("(Message2)")
data = s.recv(size)
sys.stdout.write(data)
sys.stdout.write('%')
s.close()

我希望服务器打印类似这样的内容:

received: (Message1)
received: (Message2)

因为它们是分别发送的不同消息,但我却得到:

received: (Message1)(Message2)

这是否与接收到的数据大小、某种缓冲区有关,或者与超时有关,还是其他什么?

最佳答案

这是流套接字的完全正常行为,它是连续字节流,而不是消息流。您可能会设想通过编码来格式化您的消息,例如消息的 len 后跟消息数据。然后您可以使用这些指示解析接收到的缓冲区。也可以等到找到开头的'('对应的')'。

关于Python 套接字 : how to only receive one message at a time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21685473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com