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