我正在编写一个简单的客户端 - 服务器应用程序,并查看MSDN文档,我遇到了一些有趣的流类型......
http://msdn.microsoft.com/en-us/library/system.io.compression.deflatestream.aspx http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx
显然,有一个压缩流这样的东西!当然,考虑到我们正在处理网络,这非常有吸引力。但是,最不幸的是,TcpClient.GetStream()只返回一个NetworkStream - 不是任何形式的压缩流。
我想知道是否可以连接压缩流以重定向到NetworkStream,这意味着我可以编写压缩流,并且该流会将其压缩输出写入我的NetworkStream。我还需要知道如何反向操作,获取压缩流以从NetworkStream中读取。
另一方面,你推荐我做什么 - 哪个提供最快的压缩,GZip或Deflate?两者之间的压缩有什么不同?
答案 0 :(得分:5)
这些是包装流
您可以在任何现有流周围创建GzipStream
,以将压缩数据读取或写入内部流。
答案 1 :(得分:0)
Checkout networkComms.net,一个开源网络通信库,包括在发送数据时使用多种不同类型压缩的选项。您所要做的就是更改NetworkComms.DefaultCompressor属性。您可以选择:
为了支持这些以及任何更多数量的不同压缩方法networkComms.net在基础上使用基本的networkStream,并确保在到达该点之前已经压缩了所有内容。