我正在使用spring集成TCP连接。从序列化器实现中,我直接将一些字节写入给定的OutputStream。
第一个字节似乎是自己发送的(在它自己的TCP数据包中,按wireshark报告的格式错误),然后是下一个数据包中的剩余字节。
更改要在一个调用中写入的前两个字节(两个字节长的数组)将导致将这两个字节发送到单独的数据包(而不是格式错误的)中,并在下一个数据包中进行remaning。这一结果是可重复的。
这是我能(或应该)影响的东西吗?它导致读取端出现问题,因为该设备显然希望整个消息包含在一个TCP数据包中。
发布于 2014-08-13 08:37:35
这是我能(或应该)影响的东西吗?它导致读取端出现问题,因为该设备显然希望整个消息包含在一个TCP数据包中。
那么这个应用程序的作者就不知道TCP了。TCP是基于流的协议,而不是基于数据包的协议。这意味着一次写入可以在线路上导致多个数据包,或者多次写入可以导致单个数据包。
顺便说一句,...which是由wireshark报告的畸形.
如果您捕获发送方系统上的数据包,您可能会看到将校验和计算卸载到网卡的效果。在这种情况下,wireshark会报告校验和错误。如果在接收端捕获数据包,您应该看到正确的校验和,因为发件人机器上的网卡在转发数据包之前计算校验和。
https://stackoverflow.com/questions/25281257
复制相似问题