Closed. 这个问题不符合堆栈溢出指南 /help/closed-questions 。目前不接受答案。
我正在寻找 C# 中的字符串压缩方法,可以在将数据字符串写入网络套接字之前对其运行?我对任何类型的压缩都相当陌生,因此我在这里寻求一些建议/指导。
WHY?
这在运行在服务器上的应用程序中是必需的,该服务器不断地将消息发送到我们的另一台服务器,但是托管应用程序的服务器是根据使用的数据计费的,这是相当昂贵的。移动托管不是一个选择。
所以我需要一个算法/库,它可以有效地(CPU 方面)压缩我们发送的刺消息。我愿意牺牲一些CPU使用率来换取更少的网络数据。
我不确定人们期望什么类型的压缩比,我认为这取决于您发送的字符串消息的类型及其长度。
我正在查看相当短的字符串,平均长度从 100 个字符到 256 个字符不等。有一个奇怪的长度约为 900 个字符。
字符串示例:
žŸKO9404ŸMR4ŸTT8DB3CŸTM08:50:26.253ŸDIVFSV09
这是一个更长的例子:
žŸAC15019ŸCI1602ŸSC7ŸZN001ŸPN01ŸFT7F55ŸCLSGKNetworkŸTP1ŸMR0ŸTT9733EŸIDGPAM01;GPAM02;GPAM03;GPAM05;GPAM04;GPAM06;GPAM07;GPAM08;GPAM09;GPAM10;GPAM02;GPAM03;GPAM04;GPAM05;GPAM06;GPAM07;GPAM08;GPAM09;GPAM10;GPAM01ŸTM09:01:08.858;09:01:09.066;09:01:09.043;09:01:09.044;09:01:09.066;09:01:09.066;09:01:09.065;09:01:09.068;09:01:09.067;09:01:09.067;09:01:50.395;09:01:50.386;09:01:50.386;09:01:50.386;09:01:50.396;09:01:50.384;09:01:50.385;09:01:50.386;09:01:50.386;09:01:50.384ŸTG584C;584C;584C;584C;584C;584C;584C;584C;584C;584C;589F;589F;589F;589F;589F;589F;589F;589F;589F;589F
所以我正在寻找一种可以在发送服务器上压缩,然后在接收服务器上解压缩的解决方案。
我最好的解决方案是什么?
LZO 压缩:有关更多信息:http://www.oberhumer.com/opensource/lzo/ http://www.oberhumer.com/opensource/lzo/
GZip 压缩:有关更多信息:http://msdn.microsoft.com/tr-tr/library/system.io.compression.gzipstream%28v=vs.110%29.aspx http://msdn.microsoft.com/tr-tr/library/system.io.compression.gzipstream%28v=vs.110%29.aspx
快速 LZ 压缩:有关更多信息:http://www.quicklz.com/index.php http://www.quicklz.com/index.php
用于压缩的 Gzip 示例:
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.IO.Compression.GZipStream sw = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Compress);
//Compress
sw.Write ...
sw.Close();
用于解压缩的 Gzip 示例:
System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray);
System.IO.Compression.GZipStream sr = new System.IO.Compression.GZipStream(ms,
System.IO.Compression.CompressionMode.Decompress);
//Decompress
int rByte = sr.Read ...
sr.Close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)