日本語 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.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
SOCKET(2) FreeBSD システムコールマニュアル SOCKET(2) 名称 socket -- 通信のためのエンドポイントを作成する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <sys/socket.h> int socket(int domain, int type, int protocol); 解説 socket() システムコールは、通信のエンドポイントを作成し、記述子を返しま す。 domain 引数は、通信が行なわれる通信ドメインを指定します。これは、使用され るべきプロトコルファミリを選択します。これらのファミリは、インクルード ファイル <sys/socket.h> で定義されています。現在解釈される形式は、次の通 りです: PF_LOCAL ホスト内部のプロトコル (PF_UNIX の別名), PF_UNIX ホスト内部のプロトコル, PF_INET インターネットバージョン 4 プロトコル, PF_INET6 インターネットバージョン 6 プロトコル, PF_ROUTE 内部の経路制御プロトコル, PF_LINK リンク層インタフェース, PF_KEY 内部の鍵管理機能, PF_NATM 非同期転送モードプロトコル, PF_NETGRAPH Netgraph ソケット, PF_IEEE80211 IEEE 802.11 無線リンク層プロトコル (WiFi), PF_NETLINK Netlink プロトコル, PF_BLUETOOTH Bluetooth プロトコル, PF_INET_SDP OFED ソケット直接プロトコル (IPv4), PF_INET6_SDP OFED ソケット直接プロトコル (IPv6) 各プロトコルファミリは、接頭辞が ``PF_'' の代わりに ``AF_'' であることを 除いて、同じ名前がある、アドレスファミリに接続されます。また、他のプロト コルファミリは、対応するアドレスファミリで ``PF_'' から始めて、定義されま す。 ソケットには、通信のセマンティックを指定する type があります。現在、定義 されているタイプは、次の通りです: SOCK_STREAM ストリームソケット SOCK_DGRAM データグラムソケット SOCK_RAW 生プロトコルインタフェース SOCK_RDM 伝達が信頼できるパケット SOCK_RDM 確実に配信されるパケット SOCK_SEQPACKET 順序付けられたパケットストリーム SOCK_STREAM タイプは、連続して、信頼できる、双方向の接続に基づいたバイト ストリームを提供します。帯域外のデータ転送メカニズムが、サポートされま す。SOCK_DGRAM ソケットは、(コネクションレス、固定された (通常小さい) 最 大の長さの信頼できないメッセージ) データグラムをサポートします。 SOCK_SEQPACKET ソケットは、連続して、信頼できて、固定された最大の長さの データグラムのための双方向の接続ベースのデータ転送パスを提供します。消費 者は、各読み込みシステムコールで全体のパケットを読み込むために要求されま す。この機能は、プロトコル特有の特性があります。SOCK_RAW ソケットは、内部 のネットワークプロトコルとインタフェースへのアクセスを提供しています。 スーパユーザのみが利用可能なタイプ SOCK_RAW と計画されているが、まだ実装 されていない SOCK_RDM は、ここで説明されません。 さらに、次のフラグは、type 引数で許可されます: SOCK_CLOEXEC 新しい記述子で close-on-exec を設定する SOCK_NONBLOCK 新しいソケットで non-blocking モードを設定する protocol 引数は、ソケットで使用される特別のプロトコルを指定します。通常、 単一のプロトコルだけが、与えられたプロトコルファミリ内の特別のソケットタ イプをサポートするために存在します。しかしながら、多くのプロトコルが存在 することは可能で、その場合に、特別のプロトコルは、このように指定されなけ ればなりません。使用するプロトコル番号は、通信が行なわれる ``通信ドメイ ン'' に特有です。protocols(5) を参照してください。 protocol 引数は、もしあれば、プロトコルのためのソケットタイプのデフォルト 実装を要求するために、0 の設定されます。 タイプ SOCK_STREAM のソケットは、パイプに似た、全二重のバイトストリームで す。ストリームソケットは、あらゆるデータがそれで送信するか、または受信さ れる前に、接続された状態でなければなりません。別のソケットへの接続は、 connect(2) システムコールで作成されます。いったん接続されると、データは、 read(2) または write(2) を使用して、または send(2) と recv(2) 関数のいく つかの変異型を使用して転送されます。(インターネットファミリのような、いく つかのプロトコルファミリは、sendto(2) システムコールを使用することによっ て接続操作に乗せて送信されるデータを許可する、``暗黙の接続'' の観念をサ ポートします。) セッションが完了されるとき、close(2) が実行されます。ま た、帯域外のデータは、send(2) で説明されるように送信され、recv(2) で説明 されるように受信されます。 SOCK_STREAM を実装するために使用される通信プロトコルは、データが失われな いか、または重複されないことを保証します。通信相手のプロトコルにバッファ 空間があるデータの部分は、時間の妥当な長さ内で、成功して転送できないな ら、接続は、壊れていると見なされ、呼び出しは、返される -1 とグローバル変 数 errno の特有なコードとして ETIMEDOUT でエラーを示します。プロトコル は、オプションで他の活動がない約 1 分ごとに転送を強制することによって、ソ ケットを ``warm'' (温める) ことを保持します。応答を、引き出すことができな いなら、エラーが、示され、そうでなければ、延長された期間 (例えば、5 分) のためのアイドルな接続となります。デフォルトで、プロセスが破損したスト リームで送信するなら、SIGPIPE シグナルが発生しますが、この振る舞いは、 setsockopt(2) を通して抑制されます。 SOCK_SEQPACKET ソケットは、SOCK_STREAM ソケットと同じシステムコールを使用 します。唯一の違いは、read(2) 呼び出しが、要求されたデータ量だけを返し、 到着パケットの余分なもの、破棄されます。 SOCK_DGRAM と SOCK_RAW ソケットは、send(2) 呼び出しで指定された通信相手へ のデータグラムの送信を許可します。データグラムは、一般的に、そのリターン アドレスで次のデータグラムを返す、recvfrom(2) で受信されます。 帯域外のデータが到着するとき、SIGURG シグナルを受信するプロセスグループを 指定するために、fcntl(2) システムコールを使用することができます。また、そ れは、SIGIO を通して非ブロッキング I/O と非同期の通知の I/O イベントを有 効にします。 ソケットの操作は、ソケットのレベルのオプションによって制御されます。これ らのオプションは、ファイル <sys/socket.h> で定義されています。 setsockopt(2) と getsockopt(2) システムコールは、それぞれ、オプションを設 定し、取得するために使用されます。 戻り値 エラーが起こるならば、-1 が、返され、そうでなければ、ソケットを参照してい る記述子の値が返されます。 エラー socket() システムコールは、は、次の場合に失敗します: [EACCES] 指定されたタイプおよびプロトコルのソケットを作成する パーミッションが拒否されています。 [EAFNOSUPPORT] アドレスファミリ (ドメイン) が、サポートされていませ ん、または指定されたドメインが、このプロトコルファミリ によってサポートされていません。 [EMFILE] プロセスごとの記述子テーブルが満杯です。 [ENFILE] システムファイルテーブルが満杯です。 [ENOBUFS] 十分なバッファ空間が利用不可能です。十分なリソースが解 放されるまで、ソケットを作成できません。 [EPERM] ユーザに、要求された操作を実行するための十分な特権があ りません。 [EPROTONOSUPPORT] プロトコルタイプまたは指定されたプロトコルが、このドメ イン内でサポートされていません。 [EPROTOTYPE] ソケットタイプが、プロトコルによってサポートされていま せん。 関連項目 accept(2), bind(2), connect(2), getpeername(2), getsockname(2), getsockopt(2), ioctl(2), listen(2), read(2), recv(2), select(2), send(2), shutdown(2), socketpair(2), write(2), CMSG_DATA(3), getprotoent(3), netgraph(4), protocols(5) "An Introductory 4.3 BSD Interprocess Communication Tutorial", PS1, 7. "BSD Interprocess Communication Tutorial", PS1, 8. 規格 socket() 関数は、IEEE Std 1003.1-2008 (``POSIX.1'') に適合しています。 POSIX 標準は、アドレスファミリのための AF_INET, AF_INET6 と AF_UNIX 定数 のみを指定し、socket() の domain 引数のための AF_* 定数の使用を要求しま す。SOCK_CLOEXEC フラグは、POSIX 標準の次のバージョンにに適合するはずで す。SOCK_RDM type、PF_* 定数と他のアドレスファミリは、FreeBSD 拡張です。 歴史 socket() システムコールは、4.2BSD で登場しました。 FreeBSD 13.2 August 19, 2018 FreeBSD 13.2