尝试使用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()来处理,但显然它不是。