CAsyncSocket::OnConnect
更新 : 2007 年 11 月
接続が正常終了したか、エラー終了したかにかかわらず、接続の試みが完了したことを接続しようとしているソケットに通知するために、フレームワークが呼び出します。
virtual void OnConnect(
int nErrorCode
);
パラメータ
nErrorCode
ソケットでの直前のエラー。OnConnect メンバ関数では、次のエラー コードが発生します。0 関数は正常に実行されました。
WSAEADDRINUSE 指定したアドレスは使用中です。
WSAEADDRNOTAVAIL 指定したアドレスはローカル コンピュータからは利用できません。
WSAEAFNOSUPPORT 指定したファミリのアドレスはこのソケットでは使用できません。
WSAECONNREFUSED 接続を試みましたが、強制的に拒否されました。
WSAEDESTADDRREQ 宛先アドレスが必要です。
WSAEFAULT 引数 lpSockAddrLen が不正です。
WSAEINVAL ソケットは既にアドレスにバインドされています。
WSAEISCONN ソケットは既に接続されています。
WSAEMFILE 利用できるファイル記述子がありません。
WSAENETUNREACH 現時点では、このホストからネットワークに到達できません。
WSAENOBUFS 利用できるバッファ領域がありません。ソケットは接続できません。
WSAENOTCONN ソケットが接続されていません。
WSAENOTSOCK 記述子はソケットではなく、ファイルです。
WSAETIMEDOUT 接続を試みましたが、タイムアウトしました。接続は確立していません。
解説
メモ : |
---|
CSocket では、通知関数 OnConnect が呼び出されることはありません。接続するには Connect を呼び出してください。この関数は、接続が完了したときに (成功しても失敗しても) 戻ります。接続通知の処理方法は、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);
}
必要条件
ヘッダー : afxsock.h