溫馨提示×

WINDOWS下怎么調(diào)用netdb.h

小億
237
2023-12-21 13:51:47
欄目: 智能運維

在Windows下,可以使用Winsock庫來實現(xiàn)與netdb.h頭文件相似的功能。具體步驟如下:

  1. 引入頭文件:
#include <winsock2.h>
#include <ws2tcpip.h>
  1. 初始化Winsock庫:
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
    printf("Failed to initialize Winsock\n");
    return -1;
}
  1. 使用getaddrinfo函數(shù)獲取地址信息:
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;
}

// 遍歷結(jié)果
struct addrinfo *ptr = result;
while (ptr != NULL) {
    // 可以在這里訪問ptr->ai_addr等結(jié)構(gòu)體成員獲取具體信息
    ptr = ptr->ai_next;
}

freeaddrinfo(result);
  1. 清理Winsock庫:
WSACleanup();

注意事項:

  • 需要鏈接ws2_32.lib庫,可以在工程屬性中添加該庫鏈接。
  • 在使用getaddrinfo函數(shù)之前,需要先初始化Winsock庫,使用完后再進行清理。
  • 可以根據(jù)需要修改hints結(jié)構(gòu)體的成員以過濾結(jié)果。

0