我有一个线程在不断Accept客户端来的连接,
当Accept处于阻塞等待连接的时候,如何能退出该阻塞继续往下执行
要求:
1:不要说让我杀掉该线程,
2:不要说让我模拟客户端发送一个连接请求(因为我现在就是这么做的)
当Accept处于阻塞等待连接的时候,如何能退出该阻塞继续往下执行
要求:
1:不要说让我杀掉该线程,
2:不要说让我模拟客户端发送一个连接请求(因为我现在就是这么做的)
解决方案 »
- 怎样在内核拦截 ring3 的 ControlService 函数, 使得驱动不能被停止?
- 如何在对话框中使用子窗口显示更多的控件?
- ListControl??????????????????
- 有没有办法 使得 被创建线程中的异常 不会引起 主程序的崩溃
- 线段是否经过矩形的函数
- socket问题,请帮帮小弟!急
- 视图闪烁问题
- 在没有VC环境的机器上运行时,Ado Data grid Grid控件就不能显示出来.(在线等待)
- 超级菜问题,网上下载的源码怎么用VC打开,好象打开.dsw文件没用,打开.dsp文件却要新建工作空间.
- 用 mfc 的 CSocket 出问题乐,谁知道??
- 水晶报表的动态显示问题
- 请问ado如何获得SUM()的返回值?
不知是否还有他法
//
// 接收TCP数据。
//
int CEmsSocket::Recv(LPWSABUF lpBuf, DWORD dwFlags /* = 0*/)
{
DWORD dwNumberOfBytesRecvd = 0; WSAEventSelect(m_pSock, m_hRecvEvent, FD_READ);
// 等待接收事件
if (WSAWaitForMultipleEvents(1, &m_hRecvEvent, FALSE, TIMEOUT_BASE, FALSE) == WSA_WAIT_EVENT_0
&& WSAResetEvent(m_hRecvEvent)
&& WSAEnumNetworkEvents(m_pSock, m_hRecvEvent, m_lpNetworkEvent) == 0
&& (m_lpNetworkEvent->lNetworkEvents & FD_READ)
&& m_lpNetworkEvent->iErrorCode[FD_READ_BIT] == 0)
{
// 接收数据
if (WSARecv(m_pSock, lpBuf, 1, &dwNumberOfBytesRecvd, &dwFlags, NULL, NULL) != SOCKET_ERROR)
{
return dwNumberOfBytesRecvd;
}
} return SOCKET_ERROR;} // Recv
if(ioctlsocket(m_s,FIONBIO ,&ul))
{
throw "ioctlsocket";
}
break;
使用前你先用这个设置一下,就不会组塞了。