Unix 套接字 - IP 地址函数
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 addrptr memset(&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 ",ip); (...)