Unix Socket - 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\n",ip);
 (...)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容