一、本地字节序、网络字节序
- 本地字节序:数值的存储是先存地位,再存高位
- 网络字节序:数值的存储是先存高位,再存地位
例如:有一个数0x123456
- 本地字节序存储为:0x123456
- 网络字节序存储为:0x563412
二、点分十进制与网络字节序的相互转换
- 网络编程中,网络只识别网络字节序的格式,所以点分十进制的字符串格式网络不识别。
- 下面是点分十进制与网络字节序之间的转换
下面函数用到的头文件
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
本地字节序-->网络字节序的二进制
①in_addr_t inet_addr(const char *cp);
- 参数:点分十进制的字符串
- 返回值:in_addr_t类型,网络字节序的int类型
②int inet_aton(const char *cp, struct in_addr *inp);
网络字节序的二进制-->本地字节序
char *inet_ntoa(struct in_addr in);
- 参数:网络字节序的int类型
- 返回值:点分十进制的字符串
三、端口号与网络字节序的转换
- htons(int port); //将参数转为网络字节序类型
- 参数:端口的整型格式
- 如果端口号为字符串,还需要用atoi将字符串转为整型,再转为网络字节序类型
- htons(atoi("port"));