JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... hostlen , char * serv , socklen_t servlen , int flags ); glibc 向けの機能検査マクロの要件 ( feature_test_macros (7) 参照): getnameinfo (): glibc 2.22 以降: _POSIX_C_SOURCE >= 200112L glibc 2.21 以前: _POSIX_C_SOURCE 説明 getnameinfo () 関数は、 getaddrinfo ... サービスへの変換を行う。 この関数は gethostbyaddr (3) と getservbyport (3) の機能を一つにしたものだが、 これらの関数と違い、 getnameinfo (3) はリエントラントであり、IPv4 と IPv6 の差分に依存しないかたちで プログラムを書くことができる。 addr 引数は、 IP アドレ ... を指定する。 しかし、ホスト名とサービス名の両方を不要だと指定することはできない (いずれか一方は要求すること)。 flags 引数で getnameinfo () の動作を変えることができる。指定できる値は以下の通り: NI_NAMEREQD 指定すると、ホスト名が決定できなかった場合にエラーを返 ... ... gc - 1; i++) { printf("%s: ", reqs[i]->ar_name); ret = gai_error(reqs[i]); if (ret == 0) { res = reqs[i]->ar_result; ret = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); if (ret != 0) { fprintf(stderr, "getnameinfo( ... ; i++) { printf("[%02d] %s: ", i, reqs[i]->ar_name); ret = gai_error(reqs[i]); if (!ret) { res = reqs[i]->ar_result; ret = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); if (ret) { fprintf(stderr, "getnameinfo() fai ... ... gc - 1; i++) { printf("%s: ", reqs[i]->ar_name); ret = gai_error(reqs[i]); if (ret == 0) { res = reqs[i]->ar_result; ret = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); if (ret != 0) { fprintf(stderr, "getnameinfo( ... ; i++) { printf("[%02d] %s: ", i, reqs[i]->ar_name); ret = gai_error(reqs[i]); if (!ret) { res = reqs[i]->ar_result; ret = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); if (ret) { fprintf(stderr, "getnameinfo() fai ... ... gc - 1; i++) { printf("%s: ", reqs[i]->ar_name); ret = gai_error(reqs[i]); if (ret == 0) { res = reqs[i]->ar_result; ret = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); if (ret != 0) { fprintf(stderr, "getnameinfo( ... ; i++) { printf("[%02d] %s: ", i, reqs[i]->ar_name); ret = gai_error(reqs[i]); if (!ret) { res = reqs[i]->ar_result; ret = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); if (ret) { fprintf(stderr, "getnameinfo() fai ... ... gc - 1; i++) { printf("%s: ", reqs[i]->ar_name); ret = gai_error(reqs[i]); if (ret == 0) { res = reqs[i]->ar_result; ret = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); if (ret != 0) { fprintf(stderr, "getnameinfo( ... ; i++) { printf("[%02d] %s: ", i, reqs[i]->ar_name); ret = gai_error(reqs[i]); if (!ret) { res = reqs[i]->ar_result; ret = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); if (ret) { fprintf(stderr, "getnameinfo() fai ... ... される。 この構造体には、インターフェースの様々な属性や統計情報が入る。 例 以下のプログラムは getifaddrs (), freeifaddrs (), getnameinfo (3) の使用例である。 以下はこのプログラムをあるシステムで実行した際の出力である。 $ ./a.out lo AF_PACKET (17) tx_packets = ... , family); /* For an AF_INET* interface address, display the address */ if (family == AF_INET || family == AF_INET6) { s = getnameinfo(ifa->ifa_addr, (family == AF_INET) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6), host, NI_MAXHOST, NULL, 0, ... NI_NUMERICHOST); if (s != 0) { printf("getnameinfo() failed: %s\n", gai_strerror(s)); exit(EXIT_FAILURE); } printf("\t\taddress: <%s>\n", host); } else if (family == AF_PACK ... ... される。 この構造体には、インターフェースの様々な属性や統計情報が入る。 例 以下のプログラムは getifaddrs (), freeifaddrs (), getnameinfo (3) の使用例である。 以下はこのプログラムをあるシステムで実行した際の出力である。 $ ./a.out lo AF_PACKET (17) tx_packets = ... , family); /* For an AF_INET* interface address, display the address */ if (family == AF_INET || family == AF_INET6) { s = getnameinfo(ifa->ifa_addr, (family == AF_INET) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6), host, NI_MAXHOST, NULL, 0, ... NI_NUMERICHOST); if (s != 0) { printf("getnameinfo() failed: %s\n", gai_strerror(s)); exit(EXIT_FAILURE); } printf("\t\taddress: <%s>\n", host); } else if (family == AF_PACK ... ... hostbyname* (), gethostbyaddr* (), herror (), hstrerror は過去のものである。 アプリケーションは、代わりに getaddrinfo (3), getnameinfo (3), gai_strerror (3) を使用すること。 The gethostbyname () function returns a structure of type hostent for the given hos ... いる。 POSIX.1-2008 では gethostbyname (), gethostbyaddr (), h_errno の仕様が削除されている。 代わりに、 getaddrinfo (3) と getnameinfo (3) の使用が推奨されている。 注意 gethostbyname () および gethostbyaddr () 関数は静的データへのポインターを返す。 このポイ ... る。 バグ gethostbyname () は、16進数表現のドット区切りの IPv4 アドレス文字列の要素を認識しない。 関連項目 getaddrinfo (3), getnameinfo (3), inet (3), inet_ntop (3), inet_pton (3), resolver (3), hosts (5), nsswitch.conf (5), hostname (7), named (8) この文書に ... ... hostbyname* (), gethostbyaddr* (), herror (), hstrerror は過去のものである。 アプリケーションは、代わりに getaddrinfo (3), getnameinfo (3), gai_strerror (3) を使用すること。 The gethostbyname () function returns a structure of type hostent for the given hos ... いる。 POSIX.1-2008 では gethostbyname (), gethostbyaddr (), h_errno の仕様が削除されている。 代わりに、 getaddrinfo (3) と getnameinfo (3) の使用が推奨されている。 注意 gethostbyname () および gethostbyaddr () 関数は静的データへのポインターを返す。 このポイ ... る。 バグ gethostbyname () は、16進数表現のドット区切りの IPv4 アドレス文字列の要素を認識しない。 関連項目 getaddrinfo (3), getnameinfo (3), inet (3), inet_ntop (3), inet_pton (3), resolver (3), hosts (5), nsswitch.conf (5), hostname (7), named (8) この文書に ... ... hostbyname* (), gethostbyaddr* (), herror (), hstrerror は過去のものである。 アプリケーションは、代わりに getaddrinfo (3), getnameinfo (3), gai_strerror (3) を使用すること。 The gethostbyname () function returns a structure of type hostent for the given hos ... いる。 POSIX.1-2008 では gethostbyname (), gethostbyaddr (), h_errno の仕様が削除されている。 代わりに、 getaddrinfo (3) と getnameinfo (3) の使用が推奨されている。 注意 gethostbyname () および gethostbyaddr () 関数は静的データへのポインターを返す。 このポイ ... る。 バグ gethostbyname () は、16進数表現のドット区切りの IPv4 アドレス文字列の要素を認識しない。 関連項目 getaddrinfo (3), getnameinfo (3), inet (3), inet_ntop (3), inet_pton (3), resolver (3), hosts (5), nsswitch.conf (5), hostname (7), named (8) この文書に ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。