客户端收包线程错误处理
2013-12-06 13:16
232 查看
DWORD CDECL CTalkRoomClientDlg::RecvProc(PVOID lpParam){
int nRet = 0;
DWORD dwError;
CString csFmt;
TCHAR lpBuff[0x100] = {0};
CTalkRoomClientDlg* pDlg = (CTalkRoomClientDlg*)lpParam;
while(TRUE){
if((nRet = recv(pDlg->m_sServer, lpBuff, 0x100, 0)) == SOCKET_ERROR)
{
dwError = GetLastError();
if(WSAEOPNOTSUPP == dwError)
{
csFmt.Format("服务器错误主动关闭:%d", GetLastError());
pDlg->m_ctlListBox.AddString(csFmt);
break;
}else if(WSAECONNRESET == dwError){
csFmt.Format("远程主机强迫关闭了一个现有的连接。:%d", GetLastError());
pDlg->m_ctlListBox.AddString(csFmt);
break;
}
}else if(nRet == 0){// 接受到0字节,与服务器断开连接
csFmt.Format("与服务器断开连接:%d", GetLastError());
pDlg->m_ctlListBox.AddString(csFmt);
break;
}
csFmt.Format(_T("服务器说: %s"), lpBuff);
pDlg->m_ctlListBox.AddString(csFmt);
}
return 0;
}
int nRet = 0;
DWORD dwError;
CString csFmt;
TCHAR lpBuff[0x100] = {0};
CTalkRoomClientDlg* pDlg = (CTalkRoomClientDlg*)lpParam;
while(TRUE){
if((nRet = recv(pDlg->m_sServer, lpBuff, 0x100, 0)) == SOCKET_ERROR)
{
dwError = GetLastError();
if(WSAEOPNOTSUPP == dwError)
{
csFmt.Format("服务器错误主动关闭:%d", GetLastError());
pDlg->m_ctlListBox.AddString(csFmt);
break;
}else if(WSAECONNRESET == dwError){
csFmt.Format("远程主机强迫关闭了一个现有的连接。:%d", GetLastError());
pDlg->m_ctlListBox.AddString(csFmt);
break;
}
}else if(nRet == 0){// 接受到0字节,与服务器断开连接
csFmt.Format("与服务器断开连接:%d", GetLastError());
pDlg->m_ctlListBox.AddString(csFmt);
break;
}
csFmt.Format(_T("服务器说: %s"), lpBuff);
pDlg->m_ctlListBox.AddString(csFmt);
}
return 0;
}
相关文章推荐
- 改进后的客户端服务器聊天功能,此版本比上版本多了加锁处理,多了客户端数量控制,多了线程join操作
- Android Studio下Android客户端短信验证(详细+错误处理)
- WebService客户端调用错误处理
- Enter-PSSession : 连接到远程服务器失败,错误消息如下: WinRM 客户端无法处理该请求
- WCF RIA Services学习笔记四 客户端错误处理
- WCF 第十章 异常处理 实现客户端错误处理器
- 服务器处理客户端请求线程只升不降问题分析总结
- 由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,
- 坐席客户端的登陆错误处理过程
- Message: 因为当前线程不在单线程单元中,故无法实例化 ActiveX 控件 错误处理方法
- C#客户端接受websocket推送右下角弹出提示框出现线程错误
- 使用struts2 做客户端校验时抛出freemarker模版错误异常的处理
- 译文:SQL Azure客户端-瞬态错误处理最佳实践
- Python处理多个客户端连接---线程服务器
- 串口通信--处理子线程中的错误
- ASP.NET AJAX 异常处理及在客户端显示用户用好的错误信息
- Remoting异常处理:在客户端获取服务器内部错误
- Remoting异常处理:在客户端获取服务器内部错误
- .net Webservice处理异常之SoapException封装-------处理业务流程执行的错误,向客户端返回原始错误信息
- Aerospike C客户端手册———错误处理