在学习unix网络编程的时候,遇到一个问题,那就是二进制数据在网络中传输中会受到大小端、机器位数等影响。那么如何影响呢?我手头有两台设备64位的ubuntu(小端)和32位linux开发板(MIPS架构、大端),说做就做。
我在32位机器(大端)上搭建服务端、在64位机器(小端)上搭建客户端。程序设计为客户端向服务端发送两个long类型的数据,服务端接收后将两个数据相加并返回给客户端。
服务端端核心代码如下:
for ( ; ; )
{
if ( (n = read(sockfd, &args, sizeof(args))) == 0)
return;
result.sum = args.arg1 + args.arg2;
printf("%ld-%ld\n", args.arg1, args.arg2);
write(sockfd, &result, sizeof(result));
}
客户端核心代码如下:
while (fgets(sendline, MAXLINE, fp) != NULL)