次の方法で共有


CAsyncSocket::Listen

更新 : 2007 年 11 月

接続要求を待機します。

BOOL Listen(
   int nConnectionBacklog = 5 
);

パラメータ

  • nConnectionBacklog
    接続待ちのキューを拡張できる最大長。有効な範囲は 1 ~ 5 です。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。GetLastError を呼び出すと、固有のエラー コードを取得できます。このメンバ関数では、次のエラーが発生します。

  • WSANOTINITIALISED   この API を使う前に AfxSocketInit の呼び出しが正常終了していることが必要です。

  • WSAENETDOWN   Windows ソケットの実装が、ネットワーク サブシステムの異常を検出しました。

  • WSAEADDRINUSE   使用中のアドレスでの待機を試みました。

  • WSAEINPROGRESS   実行中の Windows ソケット呼び出しがブロッキングされています。

  • WSAEINVAL   ソケットは Bind を使ってバインドされていないか、既に接続されています。

  • WSAEISCONN   ソケットは既に接続されています。

  • WSAEMFILE   利用できるファイル記述子がありません。

  • WSAENOBUFS   利用できるバッファ領域がありません。

  • WSAENOTSOCK   記述子がソケットではありません。

  • WSAEOPNOTSUPP   参照されるソケットの型は、Listen 操作をサポートしていません。

解説

接続を受け入れるには、まず Create を使ってソケットを作成し、Listen を使って接続に入るバックログを指定します。その後、Accept を使って接続を受け入れます。Listen は接続をサポートするソケットのみに適用されます。つまり、SOCK_STREAM 型のソケットのみに適用されます。このソケットは "受動" モードになります。受動モードでは、接続要求は、プロセスにより認識され、受け入れ待ちのキューに置かれます。

一般的に、この関数は、サーバーまたは接続を受け入れたいアプリケーションが使います。つまり、同時に複数の接続要求を処理するアプリケーションで使います。キューが満杯のときに接続要求が到着すると、クライアントは WSAECONNREFUSED で識別されるエラーになります。

Listen は利用できるポート (記述子) がないとき、合理的に処理を継続しようとします。つまり、キューが空になるまで接続を受け入れます。ポートが利用できるようになると、その後の Listen または Accept 呼び出しで、可能な場合は現在のまたは直前の "バックログ" へキューの内容を充填します。その後、入ってくる接続の待機を再開します。

必要条件

ヘッダー : afxsock.h

参照

参照

CAsyncSocket クラス

階層図

CAsyncSocket::Accept

CAsyncSocket::Connect

CAsyncSocket::Create

その他の技術情報

CAsyncSocket のメンバ