CAsyncSocket::OnConnect
Appelé par l'infrastructure pour notifier ce socket la connexion que sa tentative de connexion est terminée, si avec succès ou dans l'erreur.
virtual void OnConnect(
int nErrorCode
);
Paramètres
nErrorCode
l'erreur la plus récente sur un socket.Les codes d'erreur suivante s'appliquent à OnConnect la fonction membre :0 La fonction exécutée avec succès.
WSAEADDRINUSE l'adresse spécifiée est déjà en cours de utilisation.
WSAEADDRNOTAVAIL l'adresse spécifiée est pas disponible sur l'ordinateur local.
Les adresses deWSAEAFNOSUPPORT dans la famille spécifiée ne peuvent pas être utilisées avec ce socket.
WSAECONNREFUSED la tentative de connexion a été avec force rejeté.
L'adresse de destination deWSAEDESTADDRREQ est requise.
WSAEFAULT l'argument d' lpSockAddrLen est incorrect.
WSAEINVAL le socket est déjà lié à une adresse.
WSAEISCONN le socket est déjà connecté.
WSAEMFILE plus de modèles de fichier n'est disponible.
WSAENETUNREACH le réseau ne peut pas être atteint de cet hôte de référence.
WSAENOBUFS aucun espace de mémoire tampon est disponible.Le socket ne peut pas être connecté.
WSAENOTCONN le socket n'est pas connecté.
WSAENOTSOCK le modèle est un fichier, pas un socket.
WSAETIMEDOUT la tentative de connexion a expiré sans établir une connexion.
Notes
[!REMARQUE]
Dans CSocket, la fonction de notification d' OnConnect n'est jamais appelée.Pour les connexions, vous appelez simplement Connecter, qui retourne si la connexion est effectuée (avec succès ou dans l'erreur).Comment les notifications de connexion sont traitées est un détail d'implémentation MFC.
Pour plus d'informations, consultez Windows Sockets : notifications de socket.
Exemple
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);
}
Configuration requise
Header: afxsock.h