我有一个客户端和一个服务器,客户端通过tcp向服务器发送压缩块(使用zlib compress()函数压缩,服务器不是每个块的大小)。问题是如何在服务器端解压缩那些接收到的数据?数据发送(写入)和接收(读取)是持久的,所以我不能等到客户端收到所有数据然后解压缩。
答案 0 :(得分:0)
为了将压缩置于TCP之上,您需要一些协议来执行此操作。在实施这样的协议之前,应该设计它。该设计必须指定接收器如何进行成帧,以便可以实现发送器以使用该接收器设计。您需要向后退一步,弄清楚整个协议是如何运作的。在开始实施之前,你绝对应该这样做。
您可以在TCP之上开发用于压缩的流协议(其中接收器可以解压缩数据,因为整个解压缩数据块都可用而无需显式成帧)。您可以在TCP上开发用于压缩的块协议,但这需要某种实际协议来查找块的末尾。您可能必须考虑在压缩端“推送”(或刷新)数据的时间,具体取决于您之上的协议的详细信息。
在开始实现之前设计系统,否则你会发现在某些时候你不知道实现应该是什么。