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