gpt4 book ai didi

python - 你如何刷新 Python 套接字?

转载 作者:太空狗 更新时间:2023-10-29 17:40:10 25 4
gpt4 key购买 nike

我用 Python 编写了一个服务器,它以“Header:Message”的形式向客户端发送数据

我希望能够单独发送每条消息,以便客户端只需执行最少的工作即可读取“ header ”和“消息”

不幸的是,我不知道如何正确刷新 python 套接字,所以当我快速连续执行多个发送时,消息会集中在套接字缓冲区中并作为一个大块发送。

例子:

服务器发送...

socket.send ("header1:message1")
socket.send ("header2:message2")
socket.send ("header3:message3")

客户收到...“header1:message1header2:message2header3:message3”

我想收到三个单独的消息

header1:message1
header2:message2
header3:message3

我需要一种在每次发送后刷新的方法

最佳答案

我猜你是在通过 TCP 连接交谈。

您的方法有缺陷。 TCP 流被定义为字节流。您总是必须使用某种分隔符,并且不能依赖网络堆栈来分隔您的消息。

如果您确实需要基于数据报的服务,请切换到 UDP。在这种情况下,您需要自己处理重传。

澄清一下:

如您所料,刷新发送缓冲区通常会创建新包。如果您的客户足够快地阅读这些包,您每次阅读可能会收到一条消息。

现在假设您通过卫星链路进行通信。由于高带宽和延迟,sat 之前的最后一个路由器会等待很短的时间,直到缓冲区中有足够的数据并立即发送所有数据包。您的客户端现在将立即接收所有数据包,并将所有数据立即放入接收缓冲区。所以你们的分离又没有了。

关于python - 你如何刷新 Python 套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1655560/

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