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