首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java拆分包

Java拆分包
EN

Stack Overflow用户
提问于 2014-08-13 08:16:58
回答 1查看 860关注 0票数 0

我正在使用spring集成TCP连接。从序列化器实现中,我直接将一些字节写入给定的OutputStream。

第一个字节似乎是自己发送的(在它自己的TCP数据包中,按wireshark报告的格式错误),然后是下一个数据包中的剩余字节。

更改要在一个调用中写入的前两个字节(两个字节长的数组)将导致将这两个字节发送到单独的数据包(而不是格式错误的)中,并在下一个数据包中进行remaning。这一结果是可重复的。

这是我能(或应该)影响的东西吗?它导致读取端出现问题,因为该设备显然希望整个消息包含在一个TCP数据包中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-13 08:37:35

这是我能(或应该)影响的东西吗?它导致读取端出现问题,因为该设备显然希望整个消息包含在一个TCP数据包中。

那么这个应用程序的作者就不知道TCP了。TCP是基于流的协议,而不是基于数据包的协议。这意味着一次写入可以在线路上导致多个数据包,或者多次写入可以导致单个数据包。

顺便说一句,...which是由wireshark报告的畸形.

如果您捕获发送方系统上的数据包,您可能会看到将校验和计算卸载到网卡的效果。在这种情况下,wireshark会报告校验和错误。如果在接收端捕获数据包,您应该看到正确的校验和,因为发件人机器上的网卡在转发数据包之前计算校验和。

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

https://stackoverflow.com/questions/25281257

复制
相关文章

相似问题

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