virtual void OnClose( int nErrorCode ); 參數nErrorCode 在通訊端上最近的錯誤。下列程式碼錯誤適用於 OnClose 成員函式: 0 成功執行的函式。 WSAENETDOWN 視窗通訊端實作偵測網路子系統失敗。 WSAECONNRESET 連接由遠端重設。 WSAECONNABORTED 連接中止的緣故暫止或任何其他失敗。備註如...
CAsyncSocket::OnAccept 通知侦听套接字,它可以通过调用 Accept 来接受挂起的连接请求。 CAsyncSocket::OnClose 通知套接字,连接到它的套接字已关闭。 CAsyncSocket::OnConnect 通知连接套接字,连接尝试已完成,无论是成功还是出错。 CAsyncSocket::OnOutOfBandData 通知接收套接字,套接字上有要读取的带外数据(通常...
当然,很奇怪的是,即使连接已经中断,OnClose也已经被触发,你还是需要在OnClose中调用Close,否则m_hSocket并不会被自动赋值为INVALID_SOCKET。在很多长连接应用中,除建立连接以外,还需要先Login,然后才能进行业务处理,连接并Login是一个步骤依赖性过程,用异步方式处理反而会很麻烦,而CAsyncSocket是支持切换为同步...
在Win32的库里用WSASocket创建SOCKET WSACreateEvent创建一个WSAEvent,使用WSAEventSelect注册感兴趣的事件(FD_READ|FD_CONNECT|FD_CLOSE)使用WSAWaitForMultipleEvents等待WSAEvent(可以另起一线程)使用WSAEnumNetworkEvents获取相关SOCKET上发生了什么,并对应进行处理(将原来的 OnReceive(); OnConnect() ;...
m_hdlgWnd; //接收消息的窗口句柄对象 UINT port; //监听端口 int bListened; //标志是否处于监听状态,1为监听状态,0为非监听状态 // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CServerSocket) public: virtual void OnAccept(int nErrorCode); virtual void OnClose(int nErrorCode);...
pSocket->OnClose(nErrorCode); break; } } CSocketWnd类大致为: BEGIN_MESSAGE_MAP(CSocketWnd, CWnd) ON_MESSAGE(WM_SOCKET_NOTIFY, OnSocketNotify) END_MESSAGE_MAP() LRESULT CSocketWnd::OnSocketNotify(WPARAM wParam, LPARAM lParam) { CAsyncSocket::DoCallBack( wParam, lParam );//收/到Socket事件消...
为类CMySocket添加虚函数OnReceive,OnClose,OnConnect。MySocket.cpp中各函数的实现如下: 1 void CMySocket:GetDlg(CCAsyncSocketClientDlg *dlg) 2 3 m_dlg = dlg; 24、4 5 6 void CMySocket:OnConnect(int nErrorCode) /向服务器发起连接请求 7 8 / TODO: Add your specialized code here and/or ...
在长连接应用中,连接可能因为各种原因中断,所以你需要自动重连。你需要根据CAsyncSocket的成员变量m_hSocket来判断当前连接状态:if(m_hSocket==INVALID_SOCKET)。当然,很奇怪的是,即使连接已经中断,OnClose也已经被触发,你还是需要在OnClose中主动调用Close,否则m_hSocket并不会被自动赋值为INVALID_SOCKET。
OnReceive函数用于接收数据 voidCTCPClientSocket::OnClose(intnErrorCode){// TODO: 在此添加专用代码和/或调用基类if(m_pWnd!=0){m_pWnd->PostMessage(WM_CLIENT_DISCONNECT,(WPARAM)this,(LPARAM)0);}CAsyncSocket::OnClose(nErrorCode);} 当客户端断开连接时,OnClose函数被调用。