📜  Unix套接字-IP地址功能

📅  最后修改于: 2020-11-05 04:52:29             🧑  作者: Mango


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

以下三个函数调用用于IPv4寻址-

  • int inet_aton(const char * strptr,struct in_addr * addrptr)
  • in_addr_t inet_addr(const char * strptr)
  • 字符* inet_ntoa(struct in_addr inaddr)

int inet_aton(const char * strptr,struct in_addr * addrptr)

此函数调用将Internet标准点表示法中的指定字符串转换为网络地址,并将该地址存储在提供的结构中。转换后的地址将按网络字节顺序(字节从左到右顺序)。如果字符串有效,则返回1,错误则返回0。

以下是用法示例-

#include 

(...)

   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 

(...)

   struct sockaddr_in dest;

   memset(&dest, '\0', sizeof(dest));
   dest.sin_addr.s_addr = inet_addr("68.178.157.132");
   
(...)

字符* inet_ntoa(struct in_addr inaddr)

此函数调用将指定的Internet主机地址转换为Internet标准点表示法中的字符串。

以下是用法示例-

#include 

(...)

   char *ip;
   
   ip = inet_ntoa(dest.sin_addr);
   
   printf("IP Address is: %s\n",ip);
   
(...)