繁体   English   中英

DataInput:通过TCP丢失的字节

[英]DataInput: Bytes lost over TCP

我正在通过发送数据

data.writeInt()

其中Data是一个DataOutput,具有套接字的输出流。

在另一端,我有一个套接字的InputStream和一个DataInput,我读了

data.readInt()

我已经确认每次写入都与适当的读取相匹配。 然后,我使用wireshark来查看软件包,一切都应有尽有。

但是,当我发送17时,我得到1114112。这偏移了2个字节,所以我是否有可能在某个地方丢失两个字节?

我做了一些添加flush()的实验,但问题仍然存在。 另外,我(尚未)设法编写一个较小的示例来说明问题(这就是为什么我不在此处包含代码的原因)。 但是,大型示例是稳定的,每次都在同一位置发生。

使用不同的数据,在17之后(应该为0),我得到285212672。 看起来17的最后一个字节被读取了两次。

有什么想法可能是什么或建议如何调试吗?

亚历克斯

我已经确认每次写入都与适当的读取相匹配。

显然不是这样。 重新检查。 显然,您与发件人不同步。 例如,可能您正在使用read() ,而您应该使用readFully()

NB TCP不会丢失数据。

这移位了2个字节,所以我可以在某个地方放两个字节吗?

可以肯定的是,代码中存在“某处”。

我做了一些添加flush(),实验flush(),但问题仍然存在。

只能期待。 没有理由为什么flush()应该有所作为。

另外,我(尚未)设法编写一个较小的示例来说明问题(这就是为什么我不在此处包含代码的原因)。 但是,大型示例是稳定的,每次都在同一位置发生。

同样,这只是意料之中的。 您有一个应用程序协议错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM