CAsyncSocket::OnConnect

调用由框架通知此连接的套接字其连接尝试完成,是否成功或错误。

virtual void OnConnect(
   int nErrorCode 
);

参数

  • nErrorCode
    在套接字的最新错误。 以下错误代码应用于 OnConnect 成员函数:

    • 0 成功执行的函数。

    • WSAEADDRINUSE 所指定的地址已被使用。

    • WSAEADDRNOTAVAIL 所指定的地址从本地计算机不可用。

    • 在指定的系列的WSAEAFNOSUPPORT 地址不能对该套接字。

    • WSAECONNREFUSED 在尝试连接强有力地被拒绝。

    • WSAEDESTADDRREQ 一个需要目标地址。

    • WSAEFAULTlpSockAddrLen 参数不正确。

    • WSAEINVAL 套接字已绑定到地址。

    • WSAEISCONN 套接字已连接。

    • WSAEMFILE 没有其他文件描述符不可用。

    • WSAENETUNREACH 网络无法从目前的宿为止。

    • WSAENOBUFS 没有缓冲区空间可用。 套接字无法连接。

    • WSAENOTCONN 套接字未连接。

    • WSAENOTSOCK 说明符是文件,而不是套接字。

    • WSAETIMEDOUT 在尝试连接超时,而不建立连接。

备注

备注

CSocketOnConnect 通知函数从不调用。对于连接,则调用 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

请参见

参考

CAsyncSocket选件类

层次结构图

CAsyncSocket::Connect

CAsyncSocket::GetLastError

CAsyncSocket::OnAccept

CAsyncSocket::OnClose

CAsyncSocket::OnOutOfBandData

CAsyncSocket::OnReceive

CAsyncSocket::OnSend