.\" Updated 2007-07-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.58
.\" Updated 2008-02-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.77
.\"
-.\"WORD: socket ¥½¥±¥Ã¥È
-.\"WORD: listen ´Æ»ë
-.\"WORD: queue ¥¥å¡¼
-.\"WORD: descriptor ¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼
+.\"WORD: socket ソケット
+.\"WORD: listen 監視
+.\"WORD: queue ã\82ã\83¥ã\83¼
+.\"WORD: descriptor ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼
.\"
.TH LISTEN 2 2008-11-20 "Linux" "Linux Programmer's Manual"
-.SH ̾Á°
-listen \- ¥½¥±¥Ã¥È(socket)¾å¤ÎÀܳ¤òÂÔ¤Ä
-.SH ½ñ¼°
+.SH 名前
+listen \- ソケット(socket)上の接続を待つ
+.SH 書式
.nf
-.BR "#include <sys/types.h>" " /* ¡ÖÃí°Õ¡×»²¾È */"
+.BR "#include <sys/types.h>" " /* 「注意」参照 */"
.br
.B #include <sys/socket.h>
.sp
.BI "int listen(int " sockfd ", int " backlog );
.fi
-.SH ÀâÌÀ
+.SH 説明
.BR listen ()
-¤Ï
+は
.I sockfd
-¤¬»²¾È¤¹¤ë¥½¥±¥Ã¥È¤òÀܳÂÔ¤Á¥½¥±¥Ã¥È (passive socket) ¤È¤·¤Æ°õ¤ò¤Ä¤±¤ë¡£
-ÀܳÂÔ¤Á¥½¥±¥Ã¥È¤È¤Ï¡¢
+が参照するソケットを接続待ちソケット (passive socket) として印をつける。
+接続待ちソケットとは、
.BR accept (2)
-¤ò»È¤Ã¤ÆÅþÃ夷¤¿ÀܳÍ×µá¤ò¼õ¤±ÉÕ¤±¤ë¤Î¤Ë»ÈÍѤµ¤ì¤ë¥½¥±¥Ã¥È¤Ç¤¢¤ë¡£
+を使って到着した接続要求を受け付けるのに使用されるソケットである。
.I sockfd
-°ú¤¿ô¤Ï¡¢
+引き数は、
.B SOCK_STREAM
-·¿¤«
+型か
.B SOCK_SEQPACKET
-·¿¤Î¥½¥±¥Ã¥È¤ò»²¾È¤¹¤ë¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤¢¤ë¡£
+型のソケットを参照するファイルディスクリプタである。
.I backlog
-°ú¤¿ô¤Ï¡¢
+引き数は、
.I sockfd
-¤Ë¤Ä¤¤¤Æ¤ÎÊÝαÃæ¤ÎÀܳ¤Î¥¥å¡¼¤ÎºÇÂçŤò»ØÄꤹ¤ë¡£
-¥¥å¡¼¤¬¤¤¤Ã¤Ñ¤¤¤Î¾õÂÖ¤ÇÀܳÍ׵᤬ÅþÃ夹¤ë¤È¡¢¥¯¥é¥¤¥¢¥ó¥È¤Ï
+についての保留中の接続のキューの最大長を指定する。
+キューがいっぱいの状態で接続要求が到着すると、クライアントは
.B ECONNREFUSED
-¤È¤¤¤¦¥¨¥é¡¼¤ò¼õ¤±¼è¤ë¡£²¼°ÌÁؤΥץí¥È¥³¥ë¤¬ºÆÁ÷¿®¤ò¥µ¥Ý¡¼¥È
-¤·¤Æ¤¤¤ì¤Ð¡¢Í×µá¤Ï̵»ë¤µ¤ì¡¢¤³¤ì°Ê¹ß¤ÎÀܳÍ×µá¤ÎºÆÁ÷¿®¤¬À®¸ù¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
-.SH ÊÖ¤êÃÍ
-À®¸ù»þ¤Ë¤Ï0¤òÊÖ¤¹¡£¥¨¥é¡¼»þ¤Ë¤Ï \-1¤òÊÖ¤·¡¢
+というエラーを受け取る。下位層のプロトコルが再送信をサポート
+していれば、要求は無視され、これ以降の接続要求の再送信が成功するかもしれない。
+.SH 返り値
+成功時には0を返す。エラー時には \-1を返し、
.I errno
-¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£
-.SH ¥¨¥é¡¼
+を適切に設定する。
+.SH ã\82¨ã\83©ã\83¼
.TP
.B EADDRINUSE
-Ê̤Υ½¥±¥Ã¥È¤¬´û¤ËƱ¤¸¥Ý¡¼¥È¤ò listen ¤·¤Æ¤¤¤ë¡£
+別のソケットが既に同じポートを listen している。
.TP
.B EBADF
-°ú¤¿ô
+引き数
.I sockfd
-¤Ï͸ú¤Ê¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤Ç¤Ï¤Ê¤¤¡£
+は有効なディスクリプターではない。
.TP
.B ENOTSOCK
-°ú¤¿ô
+引き数
.I sockfd
-¤Ï¥½¥±¥Ã¥È¤Ç¤Ï¤Ê¤¤¡£
+はソケットではない。
.TP
.B EOPNOTSUPP
-¥½¥±¥Ã¥È¤Ï
+ソケットは
.BR listen ()
-¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë·¿¤Ç¤Ï¤Ê¤¤¡£
-.SH ½àµò
+がサポートしている型ではない。
+.SH 準拠
4.4BSD, POSIX.1-2001.
.BR listen ()
-´Ø¿ô¤Ï 4.2BSD¤Ç½é¤á¤Æ¼ÂÁõ¤µ¤ì¤¿¡£
-.SH Ãí°Õ
-Àܳ¤ò¼õ¤±ÉÕ¤±¤ë¤Ë¤Ï¡¢°Ê²¼¤Î½èÍý¤¬¼Â¹Ô¤µ¤ì¤ë¡£
+関数は 4.2BSDで初めて実装された。
+.SH 注意
+接続を受け付けるには、以下の処理が実行される。
.RS 4
.IP 1. 4
.BR socket (2)
-¤Ç¥½¥±¥Ã¥È¤òºîÀ®¤¹¤ë¡£
+でソケットを作成する。
.IP 2.
.BR bind (2)
-¤ò»È¤Ã¤Æ¥½¥±¥Ã¥È¤Ë¥í¡¼¥«¥ë¥¢¥É¥ì¥¹¤ò³ä¤êÅö¤Æ¤Æ¡¢
-¾¤Î¥½¥±¥Ã¥È¤¬¤³¤Î¥½¥±¥Ã¥È¤Ë
+を使ってソケットにローカルアドレスを割り当てて、
+他のソケットがこのソケットに
.BR connect (2)
-¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¡£
+できるようにする。
.IP 3.
.BR listen ()
-¤ò»È¤Ã¤Æ¡¢ÀܳÍ×µá¤ò¼õ¤±ÉÕ¤±¤ë°Õ»Ö¤ÈÀܳÍ×µá¤òÆþ¤ì¤ë¥¥å¡¼Ä¹¤ò»ØÄꤹ¤ë¡£
+を使って、接続要求を受け付ける意志と接続要求を入れるキュー長を指定する。
.IP 4.
.BR accept (2)
-¤ò»È¤Ã¤ÆÀܳ¤ò¼õ¤±ÉÕ¤±¤ë¡£
+を使って接続を受け付ける。
.RE
.PP
-POSIX.1-2001 ¤Ç¤Ï
+POSIX.1-2001 では
.I <sys/types.h>
-¤Î¥¤¥ó¥¯¥ë¡¼¥É¤Ïɬ¿Ü¤È¤µ¤ì¤Æ¤ª¤é¤º¡¢
-Linux ¤Ç¤Ï¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÏɬÍפǤϤʤ¤¡£
-¤·¤«¤·¡¢Îò»ËŪ¤Ë¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¼ÂÁõ (BSD ·Ï) ¤Ç¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬
-ɬÍפǤ¢¤ê¡¢°Ü¿¢À¤¬É¬Íפʥ¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¤³¤Î¥Õ¥¡¥¤¥ë¤ò
-¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¤Î¤¬¸ÌÀ¤Ç¤¢¤í¤¦¡£
+のインクルードは必須とされておらず、
+Linux ではこのヘッダファイルは必要ではない。
+しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダファイルが
+必要であり、移植性が必要なアプリケーションではこのファイルを
+インクルードするのが賢明であろう。
-TCP ¥½¥±¥Ã¥È¤Ç¤Î
+TCP ソケットでの
.I backlog
-°ú¤¿ô¤Î¿¶¤ëÉñ¤¤¤Ï Linux 2.2 ¤ÇÊѹ¹¤µ¤ì¤¿¡£
-¸½ºß¤Ç¤Ï¤³¤Î°ú¤¿ô¤Ï¡¢
-¼õ¤±ÉÕ¤±¤é¤ì¤ë¤Î¤òÂԤäƤ¤¤ë¡¢
-.I ´°Á´¤Ë
-³ÎΩ¤µ¤ì¤¿¥½¥±¥Ã¥È¤Î¥¥å¡¼¤ÎŤµ¤ò»ØÄꤹ¤ë¡£
-°ÊÁ°¤ÏÉÔ´°Á´¤ÊÀܳÍ×µá¤Î¿ô¤Ç¤¢¤Ã¤¿¤¬¡¢¤³¤ì¤òÃÖ¤´¹¤¨¤¿¡£
-ÉÔ´°Á´¤Ê¥½¥±¥Ã¥È¤Î¥¥å¡¼¤ÎºÇÂçŤÏ
+引き数の振る舞いは Linux 2.2 で変更された。
+現在ではこの引き数は、
+受け付けられるのを待っている、
+.I 完全に
+確立されたソケットのキューの長さを指定する。
+以前は不完全な接続要求の数であったが、これを置き換えた。
+不完全なソケットのキューの最大長は
.I /proc/sys/net/ipv4/tcp_max_syn_backlog
-¤òÍѤ¤¤ÆÀßÄê¤Ç¤¤ë¡£
-syncookie ¤¬Í¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢
-ÏÀÍýŪ¤ÊºÇÂçĹ¤Ï¸ºß¤»¤º¡¢¤³¤ÎÀßÄê¤Ï̵»ë¤µ¤ì¤ë¡£
+を用いて設定できる。
+syncookie が有効になっている場合、
+論理的な最大長は存在せず、この設定は無視される。
.I backlog
-°ú¤¿ô¤¬
+引き数が
.I /proc/sys/net/core/somaxconn
-¤ÎÃͤè¤ê¤âÂ礤±¤ì¤Ð¡¢
+の値よりも大きければ、
.I backlog
-¤ÎÃͤϰÅÌۤΤ¦¤Á¤Ë¤³¤ÎÃͤËÀÚ¤êµÍ¤á¤é¤ì¤ë¡£
-¤³¤Î¥Õ¥¡¥¤¥ë¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 128 ¤Ç¤¢¤ë¡£
-¥Ð¡¼¥¸¥ç¥ó 2.4.5 °ÊÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢¤³¤Î¾å¸ÂÃͤÏ
-¥³¡¼¥ÉËä¤á¹þ¤ß¤Î¸ÇÄêÃÍ
+の値は暗黙のうちにこの値に切り詰められる。
+このファイルのデフォルト値は 128 である。
+バージョン 2.4.5 以前のカーネルでは、この上限値は
+コード埋め込みの固定値
.B SOMAXCONN
-¤Ç¤¢¤ê¡¢¤½¤ÎÃÍ¤Ï 128 ¤Ç¤¢¤Ã¤¿¡£
-.\" °Ê²¼¤Ï¡¢º£¤Ç¤Ï¸Å¤¤¾ðÊó¤Ç¤¢¤ë¡£(MTK, Jun 05)
-.\" BSD (¤È¡¢¤¤¤¯¤Ä¤«¤Î BSD ¤«¤éÇÉÀ¸¤·¤¿¥·¥¹¥Æ¥à)¤Ç¤Ï backlog ¤ò 5 ¤Ë
-.\" À©¸Â¤·¤Æ¤¤¤ë¤Î¤Ç¡¢°Ü¿¢À¤ò¹Íθ¤·¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï
-.\" ¤³¤ÎÃÍ (SOMAXCONN) ¤ËÍê¤Ã¤Æ¤Ï¤¤¤±¤Ê¤¤¡£
-.SH Îã
+であり、その値は 128 であった。
+.\" 以下は、今では古い情報である。(MTK, Jun 05)
+.\" BSD (と、いくつかの BSD から派生したシステム)では backlog を 5 に
+.\" 制限しているので、移植性を考慮したアプリケーションでは
+.\" この値 (SOMAXCONN) に頼ってはいけない。
+.SH 例
.BR bind (2)
-»²¾È¡£
-.SH ´ØÏ¢¹àÌÜ
+参照。
+.SH 関連項目
.BR accept (2),
.BR bind (2),
.BR connect (2),