首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataInput:通过TCP丢失的字节

DataInput:通过TCP丢失的字节
EN

Stack Overflow用户
提问于 2015-05-07 23:41:49
回答 1查看 235关注 0票数 0

我是通过

代码语言:javascript
复制
data.writeInt()

其中数据是DataOutput,它具有套接字的输出流。

在另一端,我有一个套接字的InputStream和一个DataInput,我通过

代码语言:javascript
复制
data.readInt()

我已经确认每一次写入都与批准者读取的内容相匹配。然后,我用wireshark看包裹,一切都在那里,它应该。

然而,当我发送一个17字节时,我得到了1114112,这被移动了2个字节,所以我有可能在某个地方松掉两个字节吗?

我做了一些添加flush()的实验,但问题仍然存在。而且,我还没有(还)写了一个更小的例子来说明问题(这就是为什么我在这里不包括代码)。然而,大的例子是稳定的,它发生在同一地点,每次。

对于不同的数据,我得到了285212672之后的17 (应该是0)。这看起来像是17的最后一个字节被读了两次。

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

亚历克斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-08 00:55:46

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

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

NB TCP不会丢失数据。

这被移动了2个字节,所以我有可能在某个地方松掉两个字节吗?

这是肯定的:“某处”在你的代码中。

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

不出所料。没有理由让flush()做出任何改变。

而且,我还没有(还)写了一个更小的例子来说明问题(这就是为什么我在这里不包括代码)。然而,大的例子是稳定的,它发生在同一地点,每次。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30113464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档