背景:想在PC机和ARM上建立TCP通讯,自定义了简单的协议,PC机作为服务端,ARM作为客户端。通过填写字符数组来完成,因此不存在大小端和字节对齐问题。PC机发到ARM端数据正常,但ARM端发给PC机的部分数据前莫明地加上了ffffff。以下是部分截图:
服务端(PC机)处理发送事件的进程:
服务端(PC机)处理接收事件的进程:
客户端(ARM)处理发送事件的进程:
客户端(ARM)处理接收事件的进程:
服务端和客户端的TCP连接按照正常的socket、bind、listen、accept、connect等流程进行,对于ASCII字符的传输(如:abcdefg、1234567)没有异常,但是对于自定义的协议,因为设计了开始标志0xAA、结束标志0xEE等,似乎当字符最高位为1时就会添加ffffff,测试结果如下:
服务端(PC机):
客户端(ARM):
也许值得说明的是:我的PC机上装的是64位的ubuntu系统,ARM板跑的是32位的Linux系统。而当我将服务端程序编译到另一块32位系统的ARM板时,两个ARM的通信是正常的,不会在前面添加ffffff。可是在我目前的了解,64位的Linux和32位的区别,似乎只是指针和long类型占8字节,对于char并没有影响。如果各位前辈有了解该情况,麻烦指点一下小弟,谢谢!