上篇文章介绍了getaddrinfo替代gethostbyname 由域名获取IP的情况,本篇文章详细介绍getaddrinfo的用法。
其用法简单使用演示如下。windows下包含头文件#include
#include "stdafx.h" #include#include #include #pragma comment (lib, "Ws2_32.lib") int main(int argc, char **argv) { WORD wVersion; WSADATA WSAData; wVersion=MAKEWORD(2,2); WSAStartup(wVersion,&WSAData;); struct addrinfo hints; struct addrinfo *res, *cur; int ret; struct sockaddr_in *addr; char m_ipaddr[16]; memset(&hints;, 0, sizeof(struct addrinfo)); hints.ai_family = AF_INET; /* Allow IPv4 */ hints.ai_flags = AI_PASSIVE;/* For wildcard IP address */ hints.ai_protocol = 0; /* Any protocol */ hints.ai_socktype = SOCK_STREAM; ret = getaddrinfo("www.cplusplus.me", NULL,&hints;,&res;); if (ret == -1) { perror("getaddrinfo"); exit(1); } for (cur = res; cur != NULL; cur = cur->ai_next) { addr = (struct sockaddr_in *)cur->ai_addr; sprintf(m_ipaddr, "%d.%d.%d.%d", (*addr).sin_addr.S_un.S_un_b.s_b1, (*addr).sin_addr.S_un.S_un_b.s_b2, (*addr).sin_addr.S_un.S_un_b.s_b3, (*addr).sin_addr.S_un.S_un_b.s_b4); printf("%s\n",m_ipaddr); } freeaddrinfo(res); return 0; }
百度IP获取如下所示,当然也可以获取www.cplusplus.me的IP地址信息。
getaddrinfo
原创文章,转载请注明: 转载自C/C++程序员之家
本文链接地址: getaddrinfo函数用法示例