我是通过
data.writeInt()其中数据是DataOutput,它具有套接字的输出流。
在另一端,我有一个套接字的InputStream和一个DataInput,我通过
data.readInt()我已经确认每一次写入都与批准者读取的内容相匹配。然后,我用wireshark看包裹,一切都在那里,它应该。
然而,当我发送一个17字节时,我得到了1114112,这被移动了2个字节,所以我有可能在某个地方松掉两个字节吗?
我做了一些添加flush()的实验,但问题仍然存在。而且,我还没有(还)写了一个更小的例子来说明问题(这就是为什么我在这里不包括代码)。然而,大的例子是稳定的,它发生在同一地点,每次。
对于不同的数据,我得到了285212672之后的17 (应该是0)。这看起来像是17的最后一个字节被读了两次。
有什么想法,这可能是什么,或建议如何调试?
亚历克斯
发布于 2015-05-08 00:55:46
我已经确认,每一次写入都与适当的读相匹配。
显然不是这样的。再检查一下。显然,您与发件人不同步。例如,您可能正在使用read(),而您应该在其中使用readFully()。
NB TCP不会丢失数据。
这被移动了2个字节,所以我有可能在某个地方松掉两个字节吗?
这是肯定的:“某处”在你的代码中。
我做了一些添加
flush(),的实验,但问题依然存在。
不出所料。没有理由让flush()做出任何改变。
而且,我还没有(还)写了一个更小的例子来说明问题(这就是为什么我在这里不包括代码)。然而,大的例子是稳定的,它发生在同一地点,每次。
同样,这只是意料之中的事。您有应用程序协议错误。
https://stackoverflow.com/questions/30113464
复制相似问题