Windowsでnetdb.hを呼び出す方法は何ですか?

Windowsで、netdb.hヘッダーファイルと類似の機能を実現するために、Winsockライブラリを使用することができます。具体的な手順は以下の通りです:

  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関数を使用してアドレス情報を取得する。
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);
  1. Winsockライブラリの整理:
WSACleanup();

ご注意事項:

  1. プロジェクトのプロパティにws2_32.libライブラリをリンクすることで必要なライブラリを追加できます。
  2. getaddrinfo関数を使用する前に、Winsockライブラリを初期化する必要があり、使用後にはクリーンアップを行う必要があります。
  3. 必要に応じて、hints構造体のメンバーを変更して結果をフィルタリングできます。
bannerAds