socket_listen
socket_listen — ソケット上で接続待ち(listen)する
説明
bool socket_listen ( resource socket [, int backlog] )ソケット socket が socket_create() を用いて作成され、 socket_bind() で名前が付けられた後、 socket 上の接続要求を待つための通信が できるようになります。
最大 backlog 個の接続を処理用の キューで待ち受けることが可能です。もし待ちうけ用のキューが いっぱいになった場合、クライアントでは ECONNREFUSED の通知とともにエラーが発生します。あるいは、もし基盤となるプロトコルが リクエストの再送をサポートしている場合、再試行が成功するまで リクエストは無視されます。
注意: backlog パラメータに指定できる値の最大値は プラットフォームに大きく依存します。Linux では、最大値は SOMAXCONN に切り詰められます。win32 では、 もし SOMAXCONN を渡した場合、backlog の 最大値を適切な値に設定する責任はサービスの 提供側が負います。 このプラットフォームでは、実際の backlog の値を見つける標準的な 手段が提供されていません。
socket_listen() は、ソケットが SOCK_STREAM 型または SOCK_SEQPACKET 型の場合のみ利用可能です。
成功した場合に TRUE を、失敗した場合に FALSE を返します。 エラーコードは socket_last_error() で取得可能で、このコードを socket_strerror() に指定することにより エラーの内容を文字列として取得可能です。
socket_accept()、 socket_bind()、 socket_connect()、 socket_create() および socket_strerror() も参照ください。
Socket.Listen メソッド
アセンブリ: System (system.dll 内)



Listen により、コネクション指向の Socket が受信接続の試行を待機するようになります。受信キューに置かれる受信接続数は、backlog パラメータが指定します。指定できる最大接続数を判断するには、MaxConnections 値を取得します。Listen はブロックしません。
SocketException が発生した場合は、ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルからエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。キューからの接続を受け入れるには、Accept または BeginAccept を使用します。
![]() |
---|
Listen の前に Bind メソッドを呼び出す必要があります。呼び出さないと、Listen は SocketException をスローします。 |

Socket を使用して受信接続を待機するコード例を次に示します。
' create the socket Dim listenSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) ' bind the listening socket to the port Dim hostIP As IPAddress = Dns.Resolve(IPAddress.Any.ToString()).AddressList(0) Dim ep As New IPEndPoint(hostIP, port) listenSocket.Bind(ep) ' start listening listenSocket.Listen(backlog) End Sub 'CreateAndListen
// create the socket Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // bind the listening socket to the port IPAddress hostIP = (Dns.Resolve(IPAddress.Any.ToString())).AddressList[0]; IPEndPoint ep = new IPEndPoint(hostIP, port); listenSocket.Bind(ep); // start listening listenSocket.Listen(backlog);
// create the socket Socket^ listenSocket = gcnew Socket( AddressFamily::InterNetwork, SocketType::Stream, ProtocolType::Tcp ); // bind the listening socket to the port IPAddress^ hostIP = ( Dns::Resolve( IPAddress::Any->ToString() ) )->AddressList[ 0 ]; IPEndPoint^ ep = gcnew IPEndPoint( hostIP,port ); listenSocket->Bind( ep ); // start listening listenSocket->Listen( backlog );

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- socket.Listenのページへのリンク