CAsyncSocket::OnConnect
呼叫框架告知這個連接的通訊端其連接嘗試完成,是否成功或錯誤。
virtual void OnConnect(
int nErrorCode
);
參數
nErrorCode
在通訊端上最近的錯誤。 下列程式碼錯誤適用於 OnConnect 成員函式:0 成功執行的函式。
WSAEADDRINUSE 指定位址的已在使用中。
WSAEADDRNOTAVAIL 指定位址的從本機電腦無法使用。
在指定的家族的WSAEAFNOSUPPORT 位址不能使用這個通訊端。
這個WSAECONNREFUSED 嘗試連接的方式強制遭拒。
WSAEDESTADDRREQ A 需要目的位址。
WSAEFAULTlpSockAddrLen 引數不正確。
WSAEINVAL 通訊端已繫結至位址。
WSAEISCONN 通訊端已連接。
WSAEMFILE 沒有其他的檔案描述項無法使用。
WSAENETUNREACH 網路無法從這個階段的這個主機為止。
WSAENOBUFS 沒有緩衝區空間可供使用。 通訊端無法連接。
WSAENOTCONN 通訊端未連接。
WSAENOTSOCK 描述項是檔案,不是通訊端。
這個WSAETIMEDOUT 嘗試連接已逾時,而不需要建立連接。
備註
注意事項 |
---|
在 CSocket, OnConnect 告知函式永遠不會被呼叫。對於連接,您 連接呼叫,則會傳回,當連接完成時 (成功或錯誤)。連接告知的處理方式是 MFC 實作細節。 |
如需詳細資訊,請參閱 Windows Sockets:通訊端告知。
範例
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);
}
需求
Header: afxsock.h