CAsyncSocket::OnConnect
Wywołana w ramach tego gniazda łączące powiadomić, że jego próba połączenia jest wypełniony, czy pomyślnie lub błąd.
virtual void OnConnect(
int nErrorCode
);
Parametry
nErrorCode
Ostatni błąd na gnieździe.Następujące kody błędów, które stosuje się do OnConnect Członkowskich funkcji:0 Funkcja została wykonana pomyślnie.
WSAEADDRINUSE określony adres jest już używany.
WSAEADDRNOTAVAIL podany adres nie jest dostępna z komputera lokalnego.
WSAEAFNOSUPPORT adresy rodziny określonych nie można używać z tego gniazda.
WSAECONNREFUSED próba połączenia wymusza został odrzucony.
WSAEDESTADDRREQ wymagany jest adres docelowy.
WSAEFAULTlpSockAddrLen argument jest nieprawidłowy.
WSAEINVAL gniazdo jest już powiązany adres.
WSAEISCONN gniazdo jest już połączony.
WSAEMFILE nie więcej deskryptorów plików są dostępne.
WSAENETUNREACH sieci jest nieosiągalny z tego hosta w tej chwili.
WSAENOBUFSBrak miejsca w buforze jest dostępna.Gniazdo nie podłączony.
WSAENOTCONN gniazdo nie jest podłączony.
WSAENOTSOCK deskryptora jest plik, nie gniazda.
WSAETIMEDOUT próba połączenia przekroczyła limit czasu bez ustanowienia połączenia.
Uwagi
[!UWAGA]
W CSocket, OnConnect nigdy wywoływana jest funkcja powiadamiania.Dla połączeń, po prostu wywołać Połącz, która zwróci zakończeniem połączenia (pomyślnie lub błąd).Sposób obsługi połączeń powiadomienia jest szczegółowa implementacja MFC.
Aby uzyskać więcej informacji, zobacz Windows Sockets: gniazdo powiadomienia.
Przykład
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);
}
Wymagania
Nagłówek: afxsock.h