我书面方式一个.net / C#的客户在Solaris Java服务器。

在Java服务器以Gziped格式我需要提取书面方式原始字节的数据,但是我有麻烦在右缓冲区大小来读取数据。我读取消息未deterministicly不完全或完全和在任何情况下不能读取第二消息。 我读使用的NetworkStream类与DataAvailable属性字节。

我的猜测是,它可能与一个小/大端问题。 我是否需要使用特殊的转换,从大数据转变为小端?我需要使用gzip头读取必要的字节?

我使用前使用相同的服务器与未压缩的协议,不得不使用与之前所述的ReadLine功能一个StreamReader没有问题,但是该方案是纯粹的基于文本的。

编辑:不幸的是我没有选择作为远程服务器和协议中给出。是gzip格式的endiness部分还是我只需要头相应转换?未压缩的数据是纯的UTF8编码的字符串与换行作为分隔符。

有帮助吗?

解决方案

在GZIP格式并不复杂。它是在其一个简单的,可访问的规范文档,IETF RFC 1952年

在GZIP格式指定的位顺序字节。它不与字节序标志可调。一个GZIP流的生产者负责符合这方面的规范和GZIP流的消费者,亦同。

如果我被调试此,我想看看在字节上的导线的任一端,并确认要在字节是一样的字节出来。这足以放下端的问题。

如果你没有成功发送GZIP字节流,尝试发送测试数据 - 16个字节为0xFF,其次是16个字节和0xAA的,等等等等,然后验证这是走出另一端的数据。

我很抱歉,我不知道你的我读消息未deterministicly不全或完全,不能读取任何情况下,第二个消息是什么意思。的第二个消息?第二什么消息?存储方式不应该影响您收到的数据量。

这种感觉对我说,你没有信心,你已成功传送数据。我建议你在端问题和gzip格式问题的工作以前验证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top