![](/img/trans.png)
[英]Are bytes on a TCP socket connection lost if the connection is severed before the bytes are read?
[英]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.