当前位置:  开发笔记 > 编程语言 > 正文

你如何刷新Python套接字?

如何解决《你如何刷新Python套接字?》经验,为你挑选了1个好方法。

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

我希望能够单独发送每条消息,以便客户端需要执行最少的工作才能读取"标题"和"消息"

不幸的是,我无法弄清楚如何正确刷新python套接字,所以当我有多个发送快速连续执行时,消息在套接字缓冲区中被集中在一起并作为一个大块发送.

例:

服务器发送...

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

客户端收到..."header1:message1header2:message2header3:message3"

我想收到三条消息

header1:message1
header2:message2
header3:message3

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



1> ebo..:

我猜你是在谈论TCP连接.

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

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

澄清:

刷新发送缓冲区通常会创建新的包,就像您期望的那样.如果您的客户端足够快地读取这些包,则每次读取可能会收到一条消息.

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

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有