listen(2) FreeBSD 一般コマンドマニュアル

listen

前のページ 上に戻る 次のページ

listen




書式

     #include <sys/types.h>
     #include <sys/socket.h>

     int
     listen(int s, int backlog);


解説

     socket(2) で最初にソケットが作成され、着信接続を受け入れる意思および着信
     接続用の待ち行列限界が listen() で指定された後、接続が accept(2) で受け入
     れられます。 listen() 呼び出しは、タイプが SOCK_STREAM または
     SOCK_SEQPACKET のソケットにだけ適用されます。

     backlog パラメータは、延期中の接続の待ち行列を伸ばす際の最大長を定義しま
     す。待ち行列が満杯のときに接続要求が到着すると、クライアントは
     ECONNREFUSED を示すエラーを受信する可能性があります。または下層のプロトコ
     ルが再送信をサポートする場合は、再試行によって成功する可能性に期待して要
     求は無視されるかもしれません。

     sysctl(3) MIB 変数 ``kern.ipc.somaxconn'' は backlog のハードリミットを指
     定します。 kern.ipc.somaxconn より大きい値、または 0 より小さい値が指定さ
     れている場合、 backlog の指定は無視されて kern.ipc.somaxconn の値にされま
     す。


実装に関する注

     非スレッドライブラリ listen() は listen システムコールとして実装されてい
     ます。

     スレッドライブラリでは、 listen システムコールは _thread_sys_listen() に
     アセンブルされ、 listen() は読み書きについて s をロックしてから、
     _thread_sys_listen() を呼び出す関数として実装されています。戻る前に
     listen() は s をアンロックします。


戻り値

     関数 listen() は、処理が成功すると値 0 を返します。そうでない場合、値 -1
     が返され、グローバル変数 errno が設定されてエラーを示します。


エラー

     listen() は次の場合に処理を失敗します。

     [EBADF]            引数 s が有効な記述子ではありません。

     [ENOTSOCK]         引数 s がソケットではありません。

     [EOPNOTSUPP]       ソケットが、 listen() をサポートするタイプではありませ
                        ん。


関連項目

     accept(2), connect(2), socket(2), sysctl(3), sysctl(8)


歴史



ABELNET VPSサービス