☆ ''ローカルホストアドレスの解決''
----
''int WSAAPI'' ''&color(Maroon){getaddrinfo};'' ''(''
  ''const char FAR*'' nodename,
  ''const char FAR*'' servname,
  ''const struct addrinfo FAR*'' hints,
  ''struct addrinfo FAR**'' res
'');''
* &tip; パラメータ [#b6cef5c2]
''nodename''
-[in] 数値形式のネットワークアドレス(IPv4ならドット区切り10進数形式、IPv6なら16進数形式)または、ネットワークホスト名(アドレス検索され名前解決が行われる)を指定。通常は''NULL''を指定(この場合AI_PASSIVE フラグに基いて初期化される)

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

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

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

* (^-^ 説明 [#x7bdcdba]
''getaddrinfo()''はIPv6化には必須関数であり、IPv4/IPv6両対応とすることができる。
-パラメータnodename・servnameにはNULLを指定できるが、両方をNULLにすることはできない
-hints.ai_flagsにAI_NUMERICHOST フラグが含まれている場合パラメータnodenameには数値形式のネットワークアドレスを指定しなければならない。
-リンクリストはhints.ai_nextでリンクされている

* (^-^ Example [#l42ef0ac]
&color(Green){// getaddrinfo()};
&color(Green){// ローカルホストアドレスの解決};
&color(Green){//--------------------------------------};
iResult = ''&color(Maroon){getaddrinfo};''(NULL, "27015", &hints, &result);
&color(Blue){if}; (iResult != 0) {
  printf(&color(Purple){"getaddrinfo failed x(: %d\n"};, iResult);
  WSACleanup();
  &color(Blue){return}; 1;
}
printf(&color(Purple){"getaddrinfo success\n"};);