请问:在主线程中调用accept(sock)后,能否启动一新线程,在该线程中处理sock的FD_READ/FD_WRITE等消息 在主线程中调用accept(sock)后,启动一新ui线程,想要在该线程中处理FD_READ/FD_WRITE等消息,不知该如何处理,请高手指教![email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在另一个线程里进行断口事件扫描,简单代码如下dwResult = WSAWaitForMultipleEvents(g_Events, g_SockEventList, FALSE, WAIT_LOCK_MAX_TIME - 5000, FALSE); if (dwResult == WSA_WAIT_FAILED) { iResult = WSAGetLastError(); sprintf(strMsg, "Error number := %d", iResult); continue; } iResult = WSAEnumNetworkEvents(g_SocketMsgList[dwResult - WSA_WAIT_EVENT_0].Socket, g_SockEventList[dwResult - WSA_WAIT_EVENT_0], &dwNetworkEvent); if (iResult != 0) { iResult = WSAGetLastError(); continue; } if (dwNetworkEvent.lNetworkEvents & FD_READ) { if (dwNetworkEvent.iErrorCode[FD_READ_BIT] != 0) { bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]); continue; } g_SocketMsgList[dwResult - WSA_WAIT_EVENT_0].Begin = 0; 回调函数(); continue; } if (dwNetworkEvent.lNetworkEvents & FD_ACCEPT) { if (dwNetworkEvent.iErrorCode[FD_ACCEPT_BIT] != 0) { bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]); continue; } 回调函数(); bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]); continue; } if (dwNetworkEvent.lNetworkEvents & FD_CONNECT) { if (dwNetworkEvent.iErrorCode[FD_CONNECT_BIT] != 0) { bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]); continue; } 回调函数(); bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]); continue; } if (dwNetworkEvent.lNetworkEvents & FD_CLOSE) { if (dwNetworkEvent.iErrorCode[FD_CLOSE_BIT] != 0) { bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]); continue; } 回调函数(0); bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]); continue; } if (dwNetworkEvent.lNetworkEvents & FD_WRITE) { if (dwNetworkEvent.iErrorCode[FD_WRITE_BIT] != 0) { bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]); continue; } 回调函数(0); bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]); continue; } } 求助!急需解决Visual Studio 2008 单文档 动态添加菜单冲突问题! 莫名其妙的编译错误? 求解树节点刷新后不显示的问题? 【再次求救】如何实现浮动窗口 Help!哪位帮我提供一个VC聊天程序,不能用MFC的? 如何才能学好VC 线程里频繁使用SelectObject()与Ellipse()出异常 MFC中如何用文件类实现2个文件的复制? DLL中如何处理系统消息?USB设备拔下、插上的系统消息是什么? 关于装载时重定位的问题 Oracle816的导出文件怎么导入Oracle734? 用vc6.0在xp下编译的程序怎么还是原来的老样子?
dwResult = WSAWaitForMultipleEvents(g_Events, g_SockEventList, FALSE, WAIT_LOCK_MAX_TIME - 5000, FALSE);
if (dwResult == WSA_WAIT_FAILED)
{
iResult = WSAGetLastError();
sprintf(strMsg, "Error number := %d", iResult);
continue;
}
iResult = WSAEnumNetworkEvents(g_SocketMsgList[dwResult - WSA_WAIT_EVENT_0].Socket, g_SockEventList[dwResult - WSA_WAIT_EVENT_0], &dwNetworkEvent);
if (iResult != 0)
{
iResult = WSAGetLastError();
continue;
}
if (dwNetworkEvent.lNetworkEvents & FD_READ)
{
if (dwNetworkEvent.iErrorCode[FD_READ_BIT] != 0)
{
bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]);
continue;
}
g_SocketMsgList[dwResult - WSA_WAIT_EVENT_0].Begin = 0;
回调函数();
continue;
}
if (dwNetworkEvent.lNetworkEvents & FD_ACCEPT)
{
if (dwNetworkEvent.iErrorCode[FD_ACCEPT_BIT] != 0)
{
bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]);
continue;
}
回调函数();
bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]);
continue;
}
if (dwNetworkEvent.lNetworkEvents & FD_CONNECT)
{
if (dwNetworkEvent.iErrorCode[FD_CONNECT_BIT] != 0)
{
bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]);
continue;
}
回调函数();
bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]);
continue;
}
if (dwNetworkEvent.lNetworkEvents & FD_CLOSE)
{
if (dwNetworkEvent.iErrorCode[FD_CLOSE_BIT] != 0)
{
bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]);
continue;
}
回调函数(0);
bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]);
continue;
}
if (dwNetworkEvent.lNetworkEvents & FD_WRITE)
{
if (dwNetworkEvent.iErrorCode[FD_WRITE_BIT] != 0)
{
bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]);
continue;
}
回调函数(0);
bResult = WSAResetEvent(g_SockEventList[dwResult - WSA_WAIT_EVENT_0]);
continue;
}
}