在Windows下,可以使用Winsock库来实现与netdb.h头文件相似的功能。具体步骤如下:
引入头文件:#include <winsock2.h>#include <ws2tcpip.h>初始化Winsock库:WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { printf("Failed to initialize Winsock\n"); return -1;}使用getaddrinfo函数获取地址信息:struct addrinfo hints;struct addrinfo *result;ZeroMemory(&hints, sizeof(hints));hints.ai_family = AF_UNSPEC; // IPv4 or IPv6hints.ai_socktype = SOCK_STREAM; // TCP sockethints.ai_protocol = IPPROTO_TCP; // TCP protocolint ret = getaddrinfo("www.example.com", "http", &hints, &result);if (ret != 0) { printf("getaddrinfo failed: %d\n", ret); WSACleanup(); return -1;}// 遍历结果struct addrinfo *ptr = result;while (ptr != NULL) { // 可以在这里访问ptr->ai_addr等结构体成员获取具体信息 ptr = ptr->ai_next;}freeaddrinfo(result);清理Winsock库:WSACleanup();注意事项:
需要链接ws2_32.lib库,可以在工程属性中添加该库链接。在使用getaddrinfo函数之前,需要先初始化Winsock库,使用完后再进行清理。可以根据需要修改hints结构体的成员以过滤结果。
