getaddrinfo()

Last-modified: 2006-12-21 (木) 23:09:34

[star] ローカルホストアドレスの解決


int WSAAPI getaddrinfo (
  const char FAR* nodename,
  const char FAR* servname,
  const struct addrinfo FAR* hints,
  struct addrinfo FAR** res
);

[tip] パラメータ

nodename

  • [in] 数値形式のネットワークアドレス(IPv4ならドット区切り10進数形式、IPv6なら16進数形式)または、ネットワークホスト名(アドレス検索され名前解決が行われる)を指定。通常はNULLを指定(この場合AI_PASSIVE フラグに基いて初期化される)

servname

  • [in] ポート番号を指定する。NULLを指定した場合、ポート番号の初期化はしない。

hints

  • [in] addrinfo構造体へのポインタを指定

res

  • [out] リンクリストへのポインタを指定(addrinfo構造体のポインタのポインタ)

(^-^ 説明

getaddrinfo()はIPv6化には必須関数であり、IPv4/IPv6両対応とすることができる。

  • パラメータnodename・servnameにはNULLを指定できるが、両方をNULLにすることはできない
  • hints.ai_flagsにAI_NUMERICHOST フラグが含まれている場合パラメータnodenameには数値形式のネットワークアドレスを指定しなければならない。
  • リンクリストはhints.ai_nextでリンクされている

(^-^ Example

// getaddrinfo()
// ローカルホストアドレスの解決
//--------------------------------------
iResult = getaddrinfo(NULL, "27015", &hints, &result);
if (iResult != 0) {
  printf("getaddrinfo failed x(: %d\n", iResult);
  WSACleanup();
  return 1;
}
printf("getaddrinfo success\n");