共用方式為


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 嘗試連接已逾時,而不需要建立連接。

備註

注意事項注意事項

CSocketOnConnect 告知函式永遠不會被呼叫。對於連接,您 連接呼叫,則會傳回,當連接完成時 (成功或錯誤)。連接告知的處理方式是 MFC 實作細節。

如需詳細資訊,請參閱 Windows Sockets:通訊端告知

範例

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