Unix 套接字 - IP 地址函数



Unix 提供了各种函数调用来帮助你操作 IP 地址。这些函数在 ASCII 字符串(人们更喜欢使用)与网络字节序列的二进制值(存储在套接字地址结构中的值)之间转换因特网地址。

以下三个函数调用用于 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\n",ip);
   
(...)
广告