日本語 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
SCTP_RECVMSG(3) FreeBSD ライブラリ関数マニュアル SCTP_RECVMSG(3) 名称 sctp_recvmsg -- SCTP ソケットからメッセージを受信する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <sys/types.h> #include <sys/socket.h> #include <netinet/sctp.h> ssize_t sctp_recvmsg(int s, void *msg, size_t len, struct sockaddr * restrict from, socklen_t * restrict fromlen, struct sctp_sndrcvinfo *sinfo, int *flags); 解説 sctp_recvmsg() システムコールは、別の SCTP 終点 (endpoint) からメッセージ を受信するために使用されます。sctp_recvmsg() 呼び出しは、connect() 呼び出 しが成功した後、またはアプリケーションが listen() 続いて成功した accept() を実行した後に、1 対 1 の (SOCK_STREAM) タイプソケットによって使用されま す。1 対多の (SOCK_SEQPACKET) タイプソケットに関して、終点は、 sctp_sendmsg(), sendto() と sendmsg() を含む送信呼び出しの 1 つを通してア ソシエーションを暗黙のうちに開始された後に、sctp_recvmsg() を呼び出しま す。または、アプリケーションは、新しいアソシエーションの受信を有効にする ために明確なバックログで listen() を呼び出した後に、メッセージも受信しま す。 送信側のアドレスは、from 引数に保持され、そのサイズは、fromlen で指定しま す。sctp_recvmsg() 呼び出しが成功して完了するときに、from は、ピア (相手 側) のアドレスを保持し、fromlen は、そのアドレスの長さを保持します。アド レスは、入出力変数として使用される fromlen の初期値によってバインド (制 限) されていることに注意してください。 受信されるメッセージ msg の長さは、len によってバインド (制限) されていま す。メッセージがユーザの受信バッファに適合せず長すぎるなら、flags 引数 は、適用された MSG_EOR フラグがありません。メッセージが完全なメッセージで あるなら、flags 引数には、MSG_EOR 設定があります。局所的に検出されたエ ラーは、それに応じて、設定された errno で -1 の返り値によって示されます。 また、flags 引数は、値 MSG_NOTIFICATION を保持します。これが起こるとき、 受信されたメッセージがピアの終点からではないことを示しますが、SCTP スタッ ク (より詳しい情報については、sctp(4) 参照) からの通知です。ユーザが SCTP_EVENTS ソケットオプションを使用してそのような通知に同意しないなら、 通知が決して与えられないことに注意してください。 メッセージがソケットで利用可能でないなら、通常、sctp_recvmsg() は、ソケッ トが非ブロッキング I/O モードに置かれていないなら、メッセージまたは NOTI FICATION (通知) の受信をブロックします。select(2) システムコールは、メッ セージを受信することが可能であるかどうか決定するために使用されます。 sinfo 引数は、次のように定義されます。 struct sctp_sndrcvinfo { uint16_t sinfo_stream; /* ストリーム到着 */ uint16_t sinfo_ssn; /* ストリームシーケンス番号 */ uint16_t sinfo_flags; /* 着信メッセージでのフラグ */ uint32_t sinfo_ppid; /* ppid フィールド */ uint32_t sinfo_context; /* コンテキストフィールド */ uint32_t sinfo_timetolive; /* sctp_recvmsg によって使用されない */ uint32_t sinfo_tsn; /* 転送シーケンス番号 */ uint32_t sinfo_cumtsn; /* 累積承認ポイント */ sctp_assoc_t sinfo_assoc_id; /* ピアのアソシエーション ID */ }; sinfo->sinfo_ppid フィールドは、ピア終点からスタックを通して透過的に渡さ れた不透明な (サイズおよび形がわからない) 32 ビット値です。スタックは、バ イト順に関係なくこの値を渡すことに注意してください。 sinfo->sinfo_flags フィールドは、次を含みます: #define SCTP_UNORDERED 0x0400 /* メッセージは不規則 */ SCTP_UNORDERED フラグは、メッセージが特定の順序なしで到着し、できるだけ早 く、ピアアプリケーションに配信されることを指定するために使用されます。こ のフラグがないとき、メッセージは、受信されたストリーム内の順序で配信され ます。 sinfo->sinfo_stream フィールドは、メッセージが受信された SCTP ストリーム です。SCTP 中のストリームは、順序付けられたメッセージの信頼できる (または 部分的に信頼できる) フロー (流れ) です。 sinfo->sinfo_context フィールドは、ローカルのアプリケーションが SCTP_CONTEXT ソケットオプションでアソシエーションレベルコンテキストを設定 する場合にだけ使用されます。オプションで、ユーザプロセスは、特定のアソシ エーションから来るすべてのデータのためにいくつかのアプリケーション特有の データ構造にインデックス付けするためにこの値を使用することができます。 sinfo->sinfo_ssn フィールドは、メッセージが不規則でないなら、ピアの終点に よって割り当てられるストリームのシーケンス番号を保持します。不規則なメッ セージに関して、このフールドは、未定義値を保持します。 sinfo->sinfo_tsn フィールドは、ピア終点によってこのメッセージに割り当てら れた転送シーケンス番号 (transport sequence number) (TSN) を保持します。パ ス MTU に適合するか、または以下のメッセージに関して、これは、割り当てられ た唯一の TSN になります。複数の TSN にまたがるメッセージに関して、この値 は、メッセージで使用された TSN の 1 つになることに注意してください。 sinfo->sinfo_cumtsn フィールドは、転送アソシエーションの現在の累積された 承認ポイントを保持します。これは、メッセージ自体に割り当てられた TSN より 大きいか、または小さいかもしれないことに注意してください。 sinfo->sinfo_assoc_id は、アソシエーションに割り当てられたユニークなアソ シエーション識別です。1 対多 (SOCK_SEQPACKET) のタイプソケットに関して、 アドレスフィールドの使用なしでデータをピアに送信するためにこの値を使用す ることができます。また、特有のアソシエーション (sctp(4) 参照) で様々なソ ケットオプションを設定するためにとても役に立ちます。 sinfo->info_timetolive フィールドは、sctp_recvmsg() では使用されません。 戻り値 呼び出しは、受信されたバイト数を返し、エラーが発生したなら、-1 を返しま す。 エラー sctp_recvmsg() システムコールは、次の場合に失敗します: [EBADF] 無効の記述子が、指定されました。 [ENOTSOCK] 引数 s が、ソケットではありません。 [EFAULT] 無効のユーザ空間アドレスが引数に指定されました。 [EMSGSIZE] ソケットは、メッセージが不可分に送信されることを必要と し、送信されるメッセージのサイズは、これは不可能にしま した。 [EAGAIN] ソケットは、非ブロッキングであり、操作がブロックされる 要求であるとマークされます。 [ENOBUFS] システムは、内部のバッファを割り付けることができません でした。バッファが利用可能になるとき、操作は、成功する かもしれません。 [ENOBUFS] ネットワークインタフェースのための出力キューは、満杯で した。一般的に、これは、インタフェースが送信することを 停止しましたが、一時的な過密によって引き起こされるかも しれないことを示します。 [EHOSTUNREACH] リモートホストが、到達不可能でした。 [ENOTCONN] 1 対 1 のスタイルのソケットで、アソシエーションが存在 しません。 [ECONNRESET] ユーザが、データをピアに送信することを試みていた間に、 スタックでアボートを受信しました。 [ENOENT] 1 対多のスタイルのソケットで、アドレスが指定されないの で、アソシエーションを位置付けることができないか、また は SCTP_ABORT フラグが存在しないアソシエーションで指定 されました。 [EPIPE] ソケットは、それ以上データを送信することができません (SBS_CANTSENDMORE は、ソケットで設定されていました)。 これは通常、ソケットが接続されていなくて、1 対 1 のス タイルのソケットであることを意味します。 関連項目 getsockopt(2), recv(2), select(2), sendmsg(2), setsockopt(2), socket(2), write(2), sctp_send(3), sctp_sendmsg(3), sctp(4) FreeBSD 11.4 April 23, 2015 FreeBSD 11.4