我用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
我需要一种方法在每次发送后进行刷新
我猜你是在谈论TCP连接.
你的方法有缺陷.TCP流被定义为字节流.您总是必须使用某种分隔符,并且可能不依赖于网络堆栈来分隔您的消息.
如果你真的需要基于数据报的服务切换到UDP.在这种情况下,您需要自己处理重传.
澄清:
刷新发送缓冲区通常会创建新的包,就像您期望的那样.如果您的客户端足够快地读取这些包,则每次读取可能会收到一条消息.
现在假设您通过卫星链接进行通信.由于高带宽和延迟,sat之前的最后一个路由器等待很短的时间,直到有足够的数据进入缓冲区并立即发送所有数据包.您的客户端现在将立即接收所有数据包,并将所有数据立即放入接收缓冲区.所以你的分离再次消失了.