我目前正在尝试实现在TCP之上使用的(T)LV协议。该协议的早期版本是通过每个send-recv对发送一条消息来构建的。 (即发送(“要发送的消息” - recv(...))。这是非常糟糕的带宽 - 我想因为我发送的是非常小的数据包。 所以现在我试图切换到一个LV协议,一次发送几个消息,只按各自的长度分开(我现在使用Protocol Buffers来序列化我的数据)。
我现在有两个问题:
在python中我发送
sock.send(struct.pack("<H", len(gtMessage.SerializeToString())))
sock.send(gtMessage.SerializeToString())
如果我现在把它放到一个循环中并发送了几条消息,我最终会遇到我的旧问题,据我所知。我可以以某种方式串起要一起发送的字符串吗?
首先从TCP读取所有内容然后解析它是否更好,或者我可以读取一条消息,然后解析它然后才从线路读取下一位?
编辑:在做了一些研究后,我将第一个问题改为:
是
sock.send("somestring")
sock.send("somestring")
与
相同sock.send("somestring"+"somestring")