☆ ''ローカルホストアドレスの解決''
----
''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"};);