Condividi tramite


CAsyncSocket::OnConnect

Chiamato dal framework per notificare al connettore che il tentativo di connessione viene completata, se correttamente o per errore.

virtual void OnConnect(
   int nErrorCode 
);

Parametri

  • nErrorCode
    L'errore più recente in un socket.I seguenti codici di errore relativi a OnConnect la funzione membro:

    • 0 La funzione eseguita correttamente.

    • WSAEADDRINUSE l'indirizzo specificato sia già utilizzato.

    • WSAEADDRNOTAVAIL l'indirizzo specificato non è disponibile nel computer locale.

    • Gli indirizzi diWSAEAFNOSUPPORT la famiglia specificata non possono essere utilizzati con questo socket.

    • WSAECONNREFUSED il tentativo di eseguire validamente è stato rifiutato.

    • L'indirizzo di destinazione diWSAEDESTADDRREQ A è obbligatorio.

    • WSAEFAULT l'argomento lpSockAddrLen non è corretto.

    • IlWSAEINVAL socket già associato a un indirizzo.

    • IlWSAEISCONN socket è già connesso.

    • WSAEMFILE non più descrittori del file è disponibile.

    • WSAENETUNREACH la rete non può essere raggiunto da questo host attualmente.

    • WSAENOBUFS alcuno spazio nel buffer è disponibile.Il socket non può essere connesso.

    • IlWSAENOTCONN socket non è connesso.

    • WSAENOTSOCK il descrittore è un file, non un socket.

    • WSAETIMEDOUT il tentativo di eseguire il timeout senza stabilire una connessione.

Note

[!NOTA]

In CSocket, la funzione di notifica OnConnect non viene mai chiamata.Per le connessioni, chiamare semplicemente Connetti, che restituiranno quando la connessione è stata completata correttamente (o per errore).Come le notifiche di connessione vengono gestite è un dettaglio di implementazione MFC.

Per ulteriori informazioni, vedere Windows Sockets: Notifiche di socket.

Esempio

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);
}

Requisiti

Header: afxsock.h

Vedere anche

Riferimenti

Classe di CAsyncSocket

Grafico della gerarchia

CAsyncSocket::Connect

CAsyncSocket::GetLastError

CAsyncSocket::OnAccept

CAsyncSocket::OnClose

CAsyncSocket::OnOutOfBandData

CAsyncSocket::OnReceive

CAsyncSocket::OnSend