我使用Python套接字发送protobuf序列化消息。 发送的第一条消息是下一条消息的大小。
客户端
srz = msg.SerializeToString()
size = msg.ByteSize()
sock.sendall(bytes(str(size) + "\n", "utf-8"))
sock.sendall(srz)
服务器
class MyTCPHandler(socketserver.StreamRequestHandler):
def read_message(self,):
self.data = self.rfile.readline().strip()
try:
msg_size = int(self.data)
except ValueError:
print('not a valid message size')
print('expected message size', msg_size)
received = 0
message_s = bytes()
while received != msg_size:
message_s += self.request.recv(msg_size - received)
received = len(message_s)
这似乎发生在大于100KB的消息上。我在最后一个数据包的recv上调试了代码和服务器块。