次の方法で共有


CAsyncSocket::Accept

ソケット接続を受け取るには、このメンバー関数を呼び出します。

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

パラメーター

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

  • lpSockAddr
    接続のソケットのアドレスを受け取るネットワーク内で認識される SOCKADDR の構造体へのポインター。lpSockAddr の引数の正確な形式は確立されたアドレス ファミリによってソケットの作成時に決定されます。lpSockAddr がや lpSockAddrLennullと等しい場合、許容ソケット リモート アドレスに関する情報は返されません。

  • lpSockAddrLen
    バイト lpSockAddr のアドレスの長さへのポインター。lpSockAddrLen は Result 値パラメーターです: 最初は lpSockAddrしてをポイントする領域を含める必要があります。; 制御が返されるときに、返されたアドレスの実際の長さ (バイト単位で格納されます。

戻り値

関数が正常に終了した場合は、; は 0 と特定のエラー コードは GetLastErrorを呼び出して取得できます。このエラーは、次のメンバー関数に適用されます:

  • WSANOTINITIALISED は正常に AfxSocketInit は、この API を使用する前に行う必要があります。

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

  • WSAEFAULT は lpSockAddrLen の引数が小さすぎます ( SOCKADDR の構造体のサイズより小さい)。

  • WSAEINPROGRESS A のブロックの Windows ソケットの呼び出しは進行中です。

  • WSAEINVAL   Listen は、前に、開始されていません。

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

  • WSAENOBUFS バッファー領域は使用できません。

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

  • WSAEOPNOTSUPP は、参照先のソケット接続指向なサービスをサポートする型ではありません。

  • WSAEWOULDBLOCK はブロッキングとしてマークされ、ソケット接続は、現在入力する必要はありません。

解説

このルーチンは、保留中の接続のキュー内の最初の接続を展開し、このソケットと同じプロパティを持つ新しいソケットを作成して、rConnectedSocketにアタッチします。保留中の接続がキューにない場合、[同意する] にはを返し、GetLastError はエラーを返します。許容ソケット (rConnectedSocket) をより多くの接続を受け入れるために使用することはできません。元のソケットは開いたままで、とリッスンします。

引数 lpSockAddr が通信に認識されるように接続のソケットのアドレスが格納される結果にパラメーター、層になります。[同意する]SOCK_STREAMなどのソケット ベース接続の種類で使用されます。

必要条件

Header: afxsock.h

参照

関連項目

CAsyncSocket クラス

階層図

CAsyncSocket::Bind

CAsyncSocket::Connect

CAsyncSocket::Listen

CAsyncSocket::Create

WSAAsyncSelect