如何传输从Java到C#

如何传输从Java到C#

问题描述:

压缩串我用Java编写的服务器,并用C#编写的客户端。他们通过XMPP进行交互并相互发送消息。消息是XML,其中一些可能非常大。我正在考虑压缩数据,但是我不知道从技术角度来看,采用Java进行压缩和使用C#进行解压缩的最佳方法是什么。如何传输从Java到C#

很显然,我需要压缩缓冲区转换为Base64,它传输,解码BASE64,然后解压。我应该使用JDK和.NET中的哪些工具来压缩/解压缩数据?

+0

标准ZIP怎么样?我看到的Java配备'java.util.zip'和C#可以解压缩:http://stackoverflow.com/questions/1023476/recommend-a-library-api-to-unzip-file-in-c – 2011-03-03 08:18:30

+0

为什么你会需要base64对它们进行编码?这不像输出必须是有效的XML。 – CodesInChaos 2011-03-03 08:21:15

+0

@CodeInChaos:据我所知,输出需要是文本的。 – 2011-03-03 08:42:01

在.NET中你可以使用System.IO.Compression.GZipStream

在Java java.util.zip.GZIPOutPutStream似乎适合于压缩任务。

编辑:
另一种方法是7-ZIP。对于c#和Java都有一个SDK

编辑2:
快速谷歌的 “XMPP压缩” 表明,XMPP本身支持stream compression。这会压缩你的整个通信,并且不会要求你对BASE64编码你的压缩数据。这听起来更像是一种更有效且更兼容的压缩数据的方式,而不仅仅是压缩有效负载。

+0

谢谢,当然看起来像使用XEP-0138是正确的方法。我不确定我在.NET方面使用XMPP的库是否支持它,但如果不支持,我仍然可以使用其他选项。 – 2011-03-03 08:41:12

你可以使用像ZIP常见的算法,有两种语言足够的图书馆 - 他们也是在内存中只有工作,即没有文件系统。

对于C#我可以推荐:http://www.sharpdevelop.net/OpenSource/SharpZipLib/

听起来像XMPP的滥用。我不知道它好,但它可能已经支持压缩XML /流...

http://xmpp.org/protocols/compress/

也看在TLS压缩。

+0

这绝对是对XMPP的滥用,但是当您使用最流行的XMPP服务器而不支持流式压缩和TLS时,以及当您有两个库非常部分地支持它时,您最终会自行完成它。 。 – 2011-03-03 16:02:57