在Windows下,可以使用Winsock库来实现与netdb.h头文件相似的功能。具体步骤如下:
- 引入头文件:
#include#include
- 初始化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 IPv6 hints.ai_socktype = SOCK_STREAM; // TCP socket hints.ai_protocol = IPPROTO_TCP; // TCP protocol int 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结构体的成员以过滤结果。