CAsyncSocket::OnConnect
接続の試みが完了するこの接続のソケットを通知するためにフレームワークによって、正常またはエラーで呼び出されます。
virtual void OnConnect(
int nErrorCode
);
パラメーター
nErrorCode
ソケットの最新のエラー。次のエラー コードは OnConnect のメンバー関数に適用されます:0 正常に実行される関数。
WSAEADDRINUSE は、指定したアドレス既に使用されています。
WSAEADDRNOTAVAIL は、指定したアドレス ローカル コンピューターでは使用できません。
指定したファミリのWSAEAFNOSUPPORT の アドレスは、このソケットに使用することはできません。
WSAECONNREFUSED は接続しようとすると力強く拒否されています。
WSAEDESTADDRREQ A の目的のアドレスは必須です。
WSAEFAULTlpSockAddrLen の引数は不適切です。
WSAEINVAL は、アドレスにソケット バインドされます。
WSAEISCONN は既にソケット接続されます。
WSAEMFILE にこれ以上のファイル記述子使用できません。
WSAENETUNREACH は、現時点におけるこのネットワーク ホストから到達できません。
WSAENOBUFS バッファー領域は使用できません。ソケット接続はできません。
WSAENOTCONN は、ソケット接続されていません。
WSAENOTSOCK はファイル記述子ソケットではありません。
WSAETIMEDOUT は、接続を確立せずに接続しようとすると時間を The operation has timed out
解説
[!メモ]
CSocketでは、OnConnect 通知関数は決して呼び出されません。接続の場合、接続が完了したときに返す [接続]を呼び出し、正常に (またはエラーの場合)。接続通知を処理または MFC の実装の詳細です。
詳細については、Windows ソケット: ソケットの通知を参照してください。
使用例
void CMyAsyncSocket::OnConnect(int nErrorCode) // CMyAsyncSocket is
// derived from CAsyncSocket
{
if (0 != nErrorCode)
{
switch(nErrorCode)
{
case WSAEADDRINUSE:
AfxMessageBox(_T("The specified address is already in use.\n"));
break;
case WSAEADDRNOTAVAIL:
AfxMessageBox(_T("The specified address is not available from ")
_T("the local machine.\n"));
break;
case WSAEAFNOSUPPORT:
AfxMessageBox(_T("Addresses in the specified family cannot be ")
_T("used with this socket.\n"));
break;
case WSAECONNREFUSED:
AfxMessageBox(_T("The attempt to connect was forcefully rejected.\n"));
break;
case WSAEDESTADDRREQ:
AfxMessageBox(_T("A destination address is required.\n"));
break;
case WSAEFAULT:
AfxMessageBox(_T("The lpSockAddrLen argument is incorrect.\n"));
break;
case WSAEINVAL:
AfxMessageBox(_T("The socket is already bound to an address.\n"));
break;
case WSAEISCONN:
AfxMessageBox(_T("The socket is already connected.\n"));
break;
case WSAEMFILE:
AfxMessageBox(_T("No more file descriptors are available.\n"));
break;
case WSAENETUNREACH:
AfxMessageBox(_T("The network cannot be reached from this host ")
_T("at this time.\n"));
break;
case WSAENOBUFS:
AfxMessageBox(_T("No buffer space is available. The socket ")
_T("cannot be connected.\n"));
break;
case WSAENOTCONN:
AfxMessageBox(_T("The socket is not connected.\n"));
break;
case WSAENOTSOCK:
AfxMessageBox(_T("The descriptor is a file, not a socket.\n"));
break;
case WSAETIMEDOUT:
AfxMessageBox(_T("The attempt to connect timed out without ")
_T("establishing a connection. \n"));
break;
default:
TCHAR szError[256];
_stprintf_s(szError, _T("OnConnect error: %d"), nErrorCode);
AfxMessageBox(szError);
break;
}
AfxMessageBox(_T("Please close the application"));
}
CAsyncSocket::OnConnect(nErrorCode);
}
必要条件
Header: afxsock.h