次の方法で共有


CAsyncSocket::Accept

ソケットでの接続を受け入れます。

virtual BOOL Accept(
   CAsyncSocket& rConnectedSocket,
   SOCKADDR* lpSockAddr = NULL,
   int* lpSockAddrLen = NULL 
);

パラメーター

  • rConnectedSocket
    接続できる新しいソケットを識別する参照です。

  • lpSockAddr
    SOCKADDR 構造体へのポインター。この構造体は、ネットワーク上にある既知の、接続するソケットのアドレスを受け取ります。 引数 lpSockAddr の実際の形式は、ソケットが作成されたときに確立されるアドレス ファミリによって決まります。 lpSockAddr および lpSockAddrLen、またはどちらか一方が NULL のときは、受け入れたソケットのリモート アドレスについての情報は返されません。

  • lpSockAddrLen
    lpSockAddr 内のアドレス長へのポインター。アドレス長はバイト単位です。 lpSockAddrLen値結果パラメーターです。それは最初の指す領域を含める必要がありますlpSockAddr; 戻り、返されるアドレスの実際の長さ (バイト単位) でが含まれます。

戻り値

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

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

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

  • WSAEFAULT   引数 lpSockAddrLen が小さすぎます。SOCKADDR 構造体のサイズよりも小さくなっています。

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

  • WSAEINVAL   受け入れる前に Listen が呼び出されていません。

  • WSAEMFILE   受け入れるエントリのキューが空で、利用できる記述子がありません。

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

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

  • WSAEOPNOTSUPP   参照しているソケットは、接続指向のサービスをサポートするタイプではありません。

  • WSAEWOULDBLOCK   ソケットは非ブロッキングになっていて、受け入れる接続がありません。

解説

このルーチンは、接続待ちのキューの先頭の接続を取り出し、このソケットと同じプロパティを持つ新しいソケットを作成し、rConnectedSocket に結び付けます。 キューに待機中の接続がないときは、Accept は 0 を返します。GetLastError はエラーを返します。 受け入れたソケット (rConnectedSocket) は、別の接続の受け入れには使用できません。 基のソケットは、オープンで、リスナーのままになります。

実行後、パラメーター lpSockAddr には、接続ソケットのアドレスが設定されます。アドレスは、通信層で既知の値です。 Accept は、SOCK_STREAM のような接続ベースのソケットで使います。

必要条件

**ヘッダー:**afxsock.h

参照

参照

CAsyncSocket クラス

階層図

CAsyncSocket::Bind

CAsyncSocket::Connect

CAsyncSocket::Listen

CAsyncSocket::Create

WSAAsyncSelect

その他の技術情報

CAsyncSocket のメンバー