CAsyncSocket::OnConnect
调用由框架通知此连接的套接字其连接尝试完成,是否成功或错误。
virtual void OnConnect(
int nErrorCode
);
参数
nErrorCode
在套接字的最新错误。 以下错误代码应用于 OnConnect 成员函数:0 成功执行的函数。
WSAEADDRINUSE 所指定的地址已被使用。
WSAEADDRNOTAVAIL 所指定的地址从本地计算机不可用。
在指定的系列的WSAEAFNOSUPPORT 地址不能对该套接字。
WSAECONNREFUSED 在尝试连接强有力地被拒绝。
WSAEDESTADDRREQ 一个需要目标地址。
WSAEFAULTlpSockAddrLen 参数不正确。
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);
}
要求
Header: afxsock.h