关于Socket通信过程中字节序
在网络编程里,网络字节序是big-endian的,而大部分的PC的系统都是X86处理器系列,X86采用的是little-endian,所以需要将网络数据流转换成本地数据流的话,需要进行字节序的转换。
标准库里提供了hlton()和nthl()两个函数来支持转换。
hston(unsigned short), hlton(unsigned long) 将本地字节序转换为网络字节序
ntohl(unsigned long), ntohs(unsigned short) 将网络字节序转换为本地字节序
但是对于64位的整数进行转换,标准库并没有提供相应的转换函数。
关于本系统是Big-endian还是Little-endian存储,可以写一个简单函数进行判断:
#include<stdio.h>
int main(){
int num = 0x1234;
int* p = #
if(*((char*)p) == 0x12){
printf("Big-endian\n");
}
else{
printf("Little-endian\n");
}
return 0;
}
另外,关于socket通信过程中客户端和服务端操作系统位数的问题ÿ