字节序转换函数
uint32_t htonl(uint32_t hostlong)
主机字节序到网络字节序长整型转换uint32_t htons(uint16_t hostshort)
主机字节序到网络字节序短整型转换uint32_t ntohl(uint32_t netlong)
网络字节序到主机字节序长整型转换uint32_t ntohs(uint16_t netshort)
网络字节序到主机字节序短整型转换
字符串ip地址/二进制ip地址转换
-
int inet_aton(const char *cp, struct in_addr *inp)
inet_aton
函数将cp中点分十进制字符串类型的ip地址转换成二进制ip地址,保存在struct in_addr中。如果输入的地址非法,返回值为0。 -
in_addr_t inet_addr(const char *cp)
inet_addr
函数将cp中点分十进制字符串类型的ip地址转换为二进制的ip地址(以网络字节序表示)。如果输入的地址非法,返回值为-1,否则返回转换后的ip地址。 -
char *inet_ntoa(struct in_addr in)
inet_ntoa
函数将in_addr结构表示的ip地址转换为点分十进制的字符串。 -
int inet_pton(int af, const char *psrc, void *pdst)
inet_pton
函数将字符串类型的ip地址转换为二进制类型。第一个参数表示网络类型协议族,IPv4值为AF_INET
;第二个参数表示需要转换的字符串;第三个参数表示转换后的结果,在IPv4下指向结构struct in_addr的指针。当函数返回值为-1时,表示af协议族不支持,当函数返回0时,表示psrc不是合法的ip地址,当函数返回正数时,表示转换成功。
struct in_addr ip; char ipstr[] = "192.168.1.2"; int err = 0; err = inet_pton(AF_INET, ipstr, &ip);
-
const char *inet_ntop(int af, const void *psrc, char *pdst, socklen_t cnt)
inet_ntop
函数将二进制ip地址转换为字符串。第一个参数表示网络类型协议族;第二个参数表示需要转换的二进制ip地址;第三个参数为转换结果保存的缓存区;第四个参数为缓存区的大小。inet_ntop
函数返回指向pdst的指针,当发生错误时,返回NULL。struct in_addr ip; char str[ADDR_STRLEN]; char *p = inet_ntop(AF_INET, (void *)&ip, str, ADDR_STRLEN);