CAsyncSocket::OnConnect
Chamado pela estrutura para notificar nesse soquete está se conectando a tentativa de conexão for concluída, com êxito ou erro.
virtual void OnConnect(
int nErrorCode
);
Parâmetros
nErrorCode
O erro mais recente em um soquete.Os códigos de erro a seguir se aplicam ao OnConnect função de membro:0 A função foi executada com êxito.
WSAEADDRINUSE O endereço especificado já está em uso.
WSAEADDRNOTAVAIL O endereço especificado não está disponível na computador local.
WSAEAFNOSUPPORT Endereços na família especificado não podem ser usados com esse soquete.
WSAECONNREFUSED A tentativa de conectar foi rejeitada forçada.
WSAEDESTADDRREQ É necessário um endereço de destino.
WSAEFAULT The lpSockAddrLen o argumento é incorreto.
WSAEINVAL O soquete já limite a um endereço.
WSAEISCONN O soquete já conectado.
WSAEMFILE Não há mais descritores de arquivo estão disponível.
WSAENETUNREACH A rede não pode ser acessada a partir deste host neste momento.
WSAENOBUFS Nenhum espaço do buffer está disponível. Não é possível conectar o soquete.
WSAENOTCONN O soquete não está conectado.
WSAENOTSOCK O descritor é um arquivo, não um soquete.
WSAETIMEDOUT A tentativa de conectar atingiu o tempo limite sem estabelecer uma conectar.
Comentários
Observação: |
---|
Em CSocket, the OnConnect função de notificação nunca seja chamada. Para conexões, você simplesmente telefonar Conectar-se, que retornará quando a conexão seja concluída (com êxito ou erro).Como são tratadas as notificações de conexão é um detalhe de implementação do MFC. |
Para obter mais informações, consulte Windows Sockets: Soquete notificações.
Exemplo
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);
}
Requisitos
Cabeçalho: afxsock.h