UDP socket服务端接收长度异常的问题
发布时间
阅读量:
阅读量
近期项目中需完成一项基于UDP协议与远程服务平台进行通信的功能,简要说明如下:
本端设备为运行嵌入式Linux系统的路由器(作为UDP客户端,采用Linux C语言进行开发),远程端则为租用的阿里云服务器(作为UDP服务端,使用Java语言编写)。
通信所采用的协议为UDP,本端设备会按照设定的时间间隔向远程服务器发送数据。
在实际开发与调试过程中出现了一个异常现象:
1)当将远程服务程序部署在实验室内的PC机上进行测试时,系统运行正常,“路由器-PC”之间的交互无误。
2)当将远程服务程序迁移至阿里云服务器上执行后,服务端接收到的UDP数据包中会出现额外的4个字节内容,偶尔甚至会多出6个字节,这些多余字节的内容表现为EF BF等十六进制数值。
3)通过在远端服务器上使用tcpdump工具抓取网络数据包后发现,tcpdump捕获到的UDP数据包长度是正确的,并未出现额外字节的情况。
4)经过对字节序、字节对齐等可能因素进行了检查与尝试后,仍未找到问题的根本原因。
5)最终尝试将消息中涉及数值传输的部分全部转换为字符串形式进行传送后,问题消失,但具体原因尚未明确。
6)在网络上搜索到一篇与此类似的问题讨论帖文,但该帖子并未提供最终的解决方案,相关链接如下:
1. 问题发现的具体代码实现方式——即消息传输中包含数值信息
全部评论 (0)
还没有任何评论哟~
