这四个函数的头文件都需要头文件:
#include <arpa/inet.h>
htonl() 函数
函数原型为:
uint32_t htonl(uint32_t hostlong);
函数的功能是:将一个 32 位数从本地字节顺序转换为网络字节顺序。函数 htonl
中的字母含义为:
- h:host 本地主机
- to:to 转换
- n:net 网络
- l:unsigned long 无符号长类型
所谓网络字节顺序(大尾顺序)就是指一个数在内存中存储的时候 “高对低,低对高”(即一个数的高位字节存放在低地址单元,低位字节存放在高地址单元中),可能有的计算机在存储数据时使用的是大尾顺序,有的计算机使用的是小尾顺序。
参数:
- hostlong:主机字节顺序表达的 32 位数,类型为无符号长整形
返回值:函数的返回值是一个 32 位的网络字节顺序
htons() 函数
函数原型为:
uint16_t htons(uint16_t hostshort);
函数的功能是:将一个 16 位数从本地字节顺序转换为网络字节顺序。函数 htons
中的字母含义为:
- h:host 本地主机
- to:to 转换
- n:net 网络
- s:unsigned short 无符号短整型
参数:
- hostshort:主机字节顺序表达的 16 位数,类型为无符号短整形
返回值:函数的返回值是一个 16 位的网络字节顺序
ntohl() 函数
函数原型为:
uint32_t ntohl(uint32_t netlong);
函数的功能是:将一个 32 位数由网络字节顺序转换为主机字节顺序。函数 ntohl
中的字母含义为:
- n:net 网络
- to:to 转换
- h:host 本地主机
- l:unsigned long 无符号长类型
参数:
- netlong:网络字节顺序表达的 32 位数,类型为无符号长整形
返回值:函数的返回值是一个 32 位的主机字节顺序
ntohs() 函数
函数原型为:
uint16_t ntohs(uint16_t netshort);
函数的功能是:将一个 16 位数由网络字节顺序转换为主机字节顺序。函数 ntohs
中的字母含义为:
- n:net 网络
- to:to 转换
- h:host 本地主机
- s:unsigned short 无符号短整型
参数:
- netshort:网络字节顺序表达的 16 位数,类型为无符号短整型
返回值:函数的返回值是一个 16 位的主机字节顺序