#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char* argv[]) {
struct addrinfo hints, *res;
int status;
char ipstr[INET6_ADDRSTRLEN];
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; //不指定IPv4或IPv6
hints.ai_socktype = SOCK_STREAM; //用于TCP套接字
status = getaddrinfo(argv[1], NULL, &hints, &res); //解析域名
if (status != 0) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
return 1;
}
// 获取IP地址字符串表示形式
getnameinfo(res->ai_addr, res->ai_addrlen, ipstr, sizeof ipstr, NULL, 0, NI_NUMERICHOST);
printf("IP address: %s\n", ipstr);
freeaddrinfo(res); // 释放addrinfo结构体链表
return 0;
}
运行方式结果: