我通过
发送数据data.writeInt()
其中Data是DataOutput,它有一个socket的输出流。
另一方面,我有一个socket的InputStream和一个DataInput,我读了
data.readInt()
我已确认每次写入都与适当的读取匹配。然后我用wireshark来查看包裹,每一个都应该在那里。
然而,当我发送一个17时,我得到了1114112.这被移动了2个字节,所以我可能在某处丢失两个字节吗?
我做了一些添加flush()的实验,但问题仍然存在。此外,我还没有设法写一个更小的例子来显示问题(这就是为什么我不在这里包含代码)。然而,大的例子是稳定的,它每次都发生在同一个地方。
对于不同的数据,我在17之后得到285212672(应该是0)。这看起来像17的最后一个字节被读取两次。
任何想法可能是什么或建议如何调试这个?
亚历
答案 0 :(得分:1)
我已确认每次写入都与相应的读取匹配。
显然情况并非如此。重新检查。显然,您与发件人不同步。例如,您可能正在使用read()
使用readFully()
。
NB TCP不会丢失数据。
这被移动了2个字节,所以我可能在某处松开两个字节吗?
可以肯定的是:'某处'在你的代码中。
我做了一些添加
flush(),
的实验,但问题仍然存在。
只是期待。没有理由flush()
应该有所作为。
此外,我还没有设法编写一个显示问题的小例子(这就是为什么我不在这里包含代码)。然而,大的例子是稳定的,它每次都发生在同一个地方。
这只是预期。您有应用程序协议错误。