在ASCII字符串(“192.168.0.99”)与网络字节序的二进制值间转换地址。
涉及函数的头文件为#include<arpa/inet.h>
一、只适用于IPv4协议的函数:
int inet_aton(const char * string, struct in_addr* addr);
//函数成功,返回值1,否则返回零。
//将string所指的C字符串转换成32位的网络字节序二进制值,用个指针addr存储。
in_addr_t inet_addr(const char * strptr);
//返回值为32位的网络字节序二进制值;
//出错时返回一个常值INADDR_NONE(32位为1的值),即255.255.255.255不能由此函数
//处理,因为inet_addr(“255.255.255.255”)的返回值为2^32。
char * inet_ntoa(struct in_addr inaddr);
//将一个32位的网络字节序二进制地址转换成相应的点分十进制数串。
struct in_addr {
unsigned long s_addr;
};
以上函数不推荐使用奥!!因为他们不支持IPv6
二、适用于IPv4、IPv6协议的函数
int inet_pton(int family, const char* strptr, void *addrptr);
//转换由指针strptr所指的串,通过指针addrptr存储二进制结果。
//成功返回1; strptr指向的不是有效表达格式返回0; 出错返回-1。
char * inet_ntop(int family, const void *addrptr, char* strptr, size_t len);
//family = AF_INET/AF_INET6, 如果family不被支持,两个函数都返回错误,并将errno置为EAFNOSUPPORT 具体使用实例见下一章节