FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。

4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | 書式 | 解説 | 実装に関する注 | 戻り値 | 使用例 | 関連項目 | 規格
GETADDRINFO(3)         FreeBSD ライブラリ関数マニュアル         GETADDRINFO(3)

名称
     getaddrinfo, freeaddrinfo -- ホストとサービス名へのソケットアドレス構造体

書式
     #include <sys/types.h>
     #include <sys/socket.h>
     #include <netdb.h>

     int
     getaddrinfo(const char *hostname, const char *servname,
         const struct addrinfo *hints, struct addrinfo **res);

     void
     freeaddrinfo(struct addrinfo *ai);

解説
     getaddrinfo() 関数は、ホスト hostname とサービス servname のためにアドレ
     スとポート番号のリストを取得するために使用されます。それは、
     gethostbyname(3)getservbyname(3) 関数を置換し、より多くの柔軟性を提供
     します。

     hostnameservname 引数は、ヌル文字で終了する文字列へのポインタか NULL
     ポインタのいずれかです。hostname のための受け入れできる値は、有効なホスト
     名またはドット付きの数値 IPv4 アドレス、IPv6 アドレスまたは UNIX ドメイン
     アドレスから成る数値ホストアドレス文字列のいずれかです。servname は、
     services(5) でリストされた 10 進数のポート番号かサービス名のいずれかで
     す。少なくとも hostnameservname の 1 つは、非 NULL でなければなりませ
     ん。

     hints は、struct addrinfo へのオプションのポインタで、<netdb.h> で定義さ
     れています:

     struct addrinfo {
             int ai_flags;           /* 入力フラグ */
             int ai_family;          /* ソケットのためのアドレスファミリ */
             int ai_socktype;        /* ソケットタイプ */
             int ai_protocol;        /* ソケットのためのプロトコル */
             socklen_t ai_addrlen;   /* ソケットアドレスの長さ */
             struct sockaddr *ai_addr; /* ソケットのためのソケットアドレス */
             char *ai_canonname;     /* サービス位置のための標準名 */
             struct addrinfo *ai_next; /* リストの中の次のポインタ */
     };

     この構造体は、呼び出し側サポートか使用したいソケットのタイプに関してヒン
     ト (hints) を提供するために使用することができます。呼び出し側は、hints で
     次の構造体要素を供給することができます:

     ai_family      使用されるべきであるアドレスファミリです。ai_family が
                    AF_UNSPEC に設定されるとき、呼び出し側がオペレーティングシ
                    ステムによってサポートされたあらゆるアドレスファミリを受け
                    付けることを意味します。

     ai_socktype    必要とするソケットのタイプを示します: SOCK_STREAM,
                    SOCK_DGRAM, SOCK_SEQPACKET または SOCK_RAW です。
                    ai_socktype が 0 であるときに、呼び出し側は、どんなソケッ
                    トタイプも受け付けます。

     ai_protocol    IPPROTO_UDP, IPPROTO_TCP, IPPROTO_SCTP または
                    IPPROTO_UDPLITE の望まれている転送プロトコルを示します。
                    ai_protocol が 0 であるなら、呼び出し側は、どんなプロトコ
                    ルも受け付けます。

     ai_flags       hints パラメータが指す ai_flags フィールドは、0 に設定され
                    るか、または値 AI_ADDRCONFIG, AI_ALL, AI_CANONNAME,
                    AI_NUMERICHOST, AI_NUMERICSERV, AI_PASSIVE と AI_V4MAPPED
                    の 1 つ以上のビット単位の論理和 (OR) となります。UNIX ドメ
                    インアドレスに対して ai_flags は、無視されます。

                    AI_ADDRCONFIG   AI_ADDRCONFIG ビットが設定されるなら、IPv4
                                    アドレスは、ローカルシステムで設定される場
                                    合のみ、返されるべきであり、IPv6 アドレス
                                    は、IPv6 アドレスがローカルシステムで設定
                                    される場合にだけ、返されます。

                    AI_ALL          AI_ALL フラグが AI_V4MAPPED フラグで使用さ
                                    れるなら、getaddrinfo() は、すべての一致す
                                    る IPv6 と IPv4 アドレスを返します。

                                    例えば、DNS を使用するとき、問い合わせは、
                                    AAAA レコードと A レコードの両方のために行
                                    われ、getaddrinfo() は、両方の問い合わせの
                                    組み合わされた結果を返します。見つけられた
                                    あらゆる IPv4 アドレスは、IPv4 マップされ
                                    た IPv6 アドレスとして返されます。

                                    AI_V4MAPPED フラグなしの AI_ALL フラグは、
                                    無視されます。

                    AI_CANONNAME    AI_CANONNAME ビットが設定されているなら、
                                    getaddrinfo() への呼び出しが成功すれば、返
                                    された最初の addrinfo 構造体の
                                    ai_canonname 要素で指定されたホスト名の標
                                    準の名前を含むヌル文字で終了した文字列を返
                                    します。

                    AI_NUMERICHOST  AI_NUMERICHOST ビットが設定されているな
                                    ら、hostname は、IPv4 または IPv6 を定義す
                                    る数値文字列として扱われるべきである、また
                                    はどんな名前解決も試みられるべきでないこと
                                    を示します。

                    AI_NUMERICSERV  AI_NUMERICSERV ビットが設定されるなら、供
                                    給された NULL でない servname 文字列は、数
                                    値ポート文字列となります。そうでなければ、
                                    EAI_NONAME エラーが返されます。このビット
                                    は、呼び出される任意のタイプの名前解決サー
                                    ビス (例えば、NIS+) を抑制します。

                    AI_PASSIVE      AI_PASSIVE ビットが設定されているなら、返
                                    されたソケットアドレス構造体は、bind(2) へ
                                    の呼び出しで使用するためのもであることを示
                                    します。この場合、hostname 引数が NULL ポ
                                    インタであるなら、ソケットアドレス構造体の
                                    IP アドレスの部分は、IPv4 アドレスのための
                                    INADDR_ANY か IPv6 アドレスのための
                                    IN6ADDR_ANY_INIT に設定されます。

                                    AI_PASSIVE ビットが設定されていないなら、
                                    返されたソケットアドレス構造体は、接続指向
                                    のプロトコルのためには、connect(2) への呼
                                    び出しが、コネクションレスのプロトコルが選
                                    ばれるなら、connect(2), sendto(2), または
                                    sendmsg(2) への呼び出しが使える状態です。
                                    ソケットアドレス構造体の IP アドレスの部分
                                    の hostname が NULL ポインタで AI_PASSIVE
                                    が設定されていないなら、ループバックアドレ
                                    スに設定されます。

                    AI_V4MAPPED     AI_V4MAPPED フラグが AF_INET6 の ai_family
                                    とともに指定されるなら、getaddrinfo() は、
                                    一致している IPv6 アドレス (ai_addrlen
                                    は、16 となります) を見つけることで、IPv4
                                    マップされた IPv6 アドレスを返します。

                                    例えば、DNS を使用するとき、AAAA レコード
                                    が見つけられないなら、問い合わせは、A レ
                                    コードのために行われ、あらゆる見つかるもの
                                    は、IPv4 マップされた IPv6 アドレスとして
                                    返されます。

                                    AI_V4MAPPED フラグは、ai_family が
                                    AF_INET6 と等しくないなら、無視されます。

     hints を通して渡された addrinfo 構造体の他のすべての要素は、0 か NULL ポ
     インタでなければなりません。

     hints が NULL ポインタであるなら、getaddrinfo() は、まるで呼び出し側が
     AF_UNSPEC に設定された ai_family と他のすべての要素が 0 または NULL に設
     定された struct addrinfo を提供したかのように振る舞います。

     getaddrinfo() 呼び出しが成功した後で、*res は、1 つ以上の addrinfo 構造体
     のリンクリストへのポインタです。リストは、NULL ポインタが遭遇するまでそれ
     ぞれの addrinfo 構造体で ai_next ポインタに従って横断することができます。
     それぞれ返された addrinfo 構造体は、socket(2) への呼び出しに適している、3
     つのメンバを含んでいます: ai_family, ai_socktypeai_protocol。リストの
     中の addrinfo 構造体ごとに、ai_addr メンバは、長さ ai_addrlen の書き込ま
     れたソケットアドレス構造体を指します。

     getaddrinfo() の、この実装は、RFC 4007 の第 11 章で文書化されているように
     スコープ識別子がある数値 IPv6 アドレス記法を許します。パーセント文字とス
     コープ識別子をアドレスに追加することによって、アドレスのための
     sin6_scope_id フィールドを満たすことができます。これは、スコープアドレス
     の管理をより簡単にして、スコープアドレスのカットアンドペースト入力を許し
     ます。

     現時点では、コードは、形式付きリンクローカルのアドレスだけをサポートしま
     す。スコープ識別子は、リンク (ne0 のような) に関連しているハードウェアイ
     ンタフェースの名前に決め打ちされます。例として、``fe80::1%ne0'' は、``ne0
     インタフェースに関連するリンク上の fe80::1'' を意味します。

     現在の実装は、インタフェースとリンクと 1 対 1 の関係を仮定していますが、
     必ずしも仕様として本当ではありません。

     すべての情報は、getaddrinfo() によって動的に割り付けられて返されます: そ
     れは、ソケットアドレス構造体と同様に addrinfo 構造体自体と addrinfo 構造
     体に含まれる標準のホスト名の文字列です。

     getaddrinfo() への呼び出しが成功することによって作成された動的に割り付け
     られた構造体に割り付けられたメモリは、freeaddrinfo() 関数によって解放され
     ます。ai ポインタは、getaddrinfo() への呼び出しによって作成された
     addrinfo 構造体を指すべきです。

実装に関する注
     freeadrinfo(NULL) の振る舞いは、Version 4 of the Single UNIX
     Specification (``SUSv4'') と RFC 3493 の両方によって特定されないままにさ
     れています。現在の実装は、他のオペレーティングシステムの実装の詳細に依存
     しているプログラムとの互換性のための NULL 引数を無視します。

戻り値
     getaddrinfo() は、成功すれば 0 を、エラーが発生するなら gai_strerror(3)
     に記載されたエラーコードの 1 つを返します。

使用例
     次のコードは、ストリームソケットを通して ``www.kame.net'' サービス
     ``http'' に接続しようと試みます。それは、アドレスファミリにかかわらず利用
     可能なすべてのアドレスを通ってループします。宛先 (終点) が IPv4 アドレス
     として解決するなら、AF_INET ソケットを使用します。同様に、IPv6 として解決
     するなら AF_INET6 ソケットが使用されます。特定のアドレスファミリに決めう
     ちされた参照がないことに注意してください。getaddrinfo() が IPv4/v6 でない
     アドレスを返しても、コードは、動作します。

           struct addrinfo hints, *res, *res0;
           int error;
           int s;
           const char *cause = NULL;

           memset(&hints, 0, sizeof(hints));
           hints.ai_family = AF_UNSPEC;
           hints.ai_socktype = SOCK_STREAM;
           error = getaddrinfo("www.kame.net", "http", &hints, &res0);
           if (error) {
                   errx(1, "%s", gai_strerror(error));
                   /* NOTREACHED */
           }
           s = -1;
           for (res = res0; res; res = res->ai_next) {
                   s = socket(res->ai_family, res->ai_socktype,
                       res->ai_protocol);
                   if (s < 0) {
                           cause = "socket";
                           continue;
                   }

                   if (connect(s, res->ai_addr, res->ai_addrlen) < 0) {
                           cause = "connect";
                           close(s);
                           s = -1;
                           continue;
                   }

                   break;  /* オーケ、1 つを取得 */
           }
           if (s < 0) {
                   err(1, "%s", cause);
                   /* NOTREACHED */
           }
           freeaddrinfo(res0);

     次の例は、利用可能なすべてのアドレスファミリのためにサービス ``http'' で
     ワイルドカードリッスンソケットをオープンしようと試みています。

           struct addrinfo hints, *res, *res0;
           int error;
           int s[MAXSOCK];
           int nsock;
           const char *cause = NULL;

           memset(&hints, 0, sizeof(hints));
           hints.ai_family = AF_UNSPEC;
           hints.ai_socktype = SOCK_STREAM;
           hints.ai_flags = AI_PASSIVE;
           error = getaddrinfo(NULL, "http", &hints, &res0);
           if (error) {
                   errx(1, "%s", gai_strerror(error));
                   /* NOTREACHED */
           }
           nsock = 0;
           for (res = res0; res && nsock < MAXSOCK; res = res->ai_next) {
                   s[nsock] = socket(res->ai_family, res->ai_socktype,
                       res->ai_protocol);
                   if (s[nsock] < 0) {
                           cause = "socket";
                           continue;
                   }

                   if (bind(s[nsock], res->ai_addr, res->ai_addrlen) < 0) {
                           cause = "bind";
                           close(s[nsock]);
                           continue;
                   }
                   (void) listen(s[nsock], 5);

                   nsock++;
           }
           if (nsock == 0) {
                   err(1, "%s", cause);
                   /* NOTREACHED */
           }
           freeaddrinfo(res0);

関連項目
     bind(2), connect(2), send(2), socket(2), gai_strerror(3),
     gethostbyname(3), getnameinfo(3), getservbyname(3), resolver(3), inet(4),
     inet6(4), unix(4), hosts(5), resolv.conf(5), services(5), hostname(7),
     named(8)

     R. Gilligan, S. Thomson, J. Bound, J. McCann, and W. Stevens, Basic
     Socket Interface Extensions for IPv6, RFC 3493, February 2003.

     S. Deering, B. Haberman, T. Jinmei, E. Nordmark, and B. Zill, IPv6 Scoped
     Address Architecture, RFC 4007, March 2005.

     Craig Metz, "Protocol Independence Using the Sockets API", Proceedings of
     the freenix track: 2000 USENIX annual technical conference, June 2000.

規格
     getaddrinfo() 関数は、IEEE Std 1003.1-2004 (``POSIX.1'') 仕様で定義され、
     RFC 3493, ``Basic Socket Interface Extensions for IPv6'' で文書化されまし
     た。

FreeBSD 11.2                  September 13, 2017                  FreeBSD 11.2

Table of Contents

FreeBSD マニュアル検索