使用 zlib 解压缩来自 tcp 连接的传入数据(压缩数据)

use zlib to uncompress incoming data(compressed data) from a tcp connection

我有一个客户端和一个服务器,客户端通过 tcp 向服务器发送压缩块(使用 zlib compress() 函数压缩,服务器没有每个块的大小)。问题是如何在服务器端解压缩那些接收到的数据?数据发送(写入)和接收(读取)是持久化的,所以我不能等到客户端接收到所有数据然后解压缩。

为了在 TCP 之上进行压缩,您需要一些协议来执行此操作。在实施这样的协议之前,应该对其进行设计。该设计必须指定接收方将如何进行成帧,以便可以实现发送方以与该接收方设计一起工作。您需要后退一大步,弄清楚整个协议将如何运作。在开始实施之前,您绝对应该这样做。

您可以在 TCP 之上开发用于压缩的流协议(其中接收方可以解压缩数据,因为整个解压缩数据块都可用,而无需显式成帧)。您可以在 TCP 之上开发用于压缩的块协议,但这将需要某种实际协议来查找块的末端。您可能需要考虑何时在压缩端 "pushed"(或刷新)数据,具体取决于您之上的协议的详细信息。

在开始实施之前设计系统,否则您会发现在某些时候您不知道实施应该是什么。