【发布时间】:2011-12-17 22:45:01
【问题描述】:
我目前正在尝试实现一个 (T)LV 协议以在 TCP 之上使用。这个协议的一个非常早期的版本是通过每个 send-recv 对发送一条消息来构建的。 (即发送(“要传输的消息”-recv(...))。这在带宽方面确实很糟糕-我想是因为我发送的数据包非常小。 所以现在我正在尝试切换到 LV 协议,一次发送几条消息,仅按它们各自的长度分隔(我现在使用协议缓冲区来序列化我的数据)。
我现在有两个问题:
-
在python中我通过做发送
sock.send(struct.pack("<H", len(gtMessage.SerializeToString()))) sock.send(gtMessage.SerializeToString())
如果我现在将它放入一个循环并发送其中几条消息,据我所知,我最终会遇到我的老问题。我可以以某种方式将要一起发送的字符串串起来吗?
- 在 C++ 中,我首先接收消息的长度,然后读取长度字段指示的字节数。
首先从 TCP 读取所有内容然后解析它在性能方面更好,还是我可以读取一条消息,然后解析它,然后才从线路中读取下一位?
编辑:所以在做了更多研究之后,我将第一个问题改写为:
是
sock.send("somestring")
sock.send("somestring")
同
sock.send("somestring"+"somestring")
?
【问题讨论】:
标签: c++ python tcp protocol-buffers