Unix提供各种函数调用来帮助您操作IP地址。这些函数在ASCII字符串(人类喜欢使用的字符串)和网络字节排序的二进制值(存储在套接字地址结构中的值)之间转换Internet地址。
下面三个函数调用用于IPv4寻址
int inet_aton(const char *strptr, struct in_addr *addrptr)
in_addr_t inet_addr(const char *strptr)
char *inet_ntoa(struct in_addr inaddr)
int inet_aton(const char *strptr, struct in_addr *addrptr)
此函数调用将Internet标准点表示法中的指定字符串转换为网络地址,并将地址存储在提供的结构中。转换后的地址将按照网络字节顺序(字节顺序从左到右)。如果字符串有效,则返回1;如果错误,则返回0。
下面是使用示例
#include <arpa/inet.h>
(...)
int retval;
struct in_addr addrptrmemset(&addrptr, '\0', sizeof(addrptr));
retval = inet_aton("68.178.157.132", &addrptr);
(...)
in_addr_t inet_addr(const char *strptr)
此函数调用将Internet标准点表示法中的指定字符串转换为适合用作Internet地址的整数值。转换后的地址将按照网络字节顺序(字节顺序从左到右)。它返回一个32位二进制网络字节排序的IPv4地址,错误时返回INADDR_NONE。
下面是使用示例
#include <arpa/inet.h>
(...)
struct sockaddr_in dest;
memset(&dest, '\0', sizeof(dest));
dest.sin_addr.s_addr = inet_addr("68.178.157.132");
(...)
char *inet_ntoa(struct in_addr inaddr)
此函数调用将指定的Internet主机地址转换为Internet标准点表示法中的字符串。
下面是使用示例
#include <arpa/inet.h>
(...)
char *ip;
ip = inet_ntoa(dest.sin_addr);
printf("IP Address is: %s\n",ip);
(...)