收到整个消息之前的Python recv阻塞

时间:2017-09-08 17:33:15

标签: python-3.x sockets

我使用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上调试了代码和服务器块。

0 个答案:

没有答案