由于某种原因,套接字阻止发送

时间:2015-10-27 15:20:21

标签: python sockets

尝试使用SocketServer在原始套接字上实现压缩通信。我的处理程序类执行此操作以阅读

       raw_message = []
       while True:
           data = self.request.recv(1024)
           if not data:
               break
           raw_message.append(data)
       raw_message = ''.join(raw_message)

然后它尝试解压缩并向我发送回复。我的客户端代码就像这样

    try:
        sock.connect(('myhost', 8075))
    except Exception as e:
        print('failed to connect', e)
    compressed = zlib.compress(bytes(payload, 'utf-8'))
    print('payload length: ', len(payload))
    print('compressed length: ', len(compressed))
    try:
        sock.sendall(compressed)

    except Exception as e:
        print('failed to send', e)
    print('sent')
    data = sock.recv(4096)
    print('data: ', zlib.decompress(data))

不知何故,服务器永远不会脱离“while True:”循环,即使每个教程都说它应该以这种方式工作。我做错了什么?

编辑:看起来单个套接字上的连续通信需要一些规划,其中两端都知道通信何时开始和停止。我希望这可以通过send()和recv()来处理,但显然它不是。

0 个答案:

没有答案