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



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

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

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

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

最新更新