首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

OnReceive事件一直不触发服务端是用API写的,客户端是用CSocket(Cascsocket)写的。该如何解决

2012-02-13 
OnReceive事件一直不触发服务端是用API写的,客户端是用CSocket(Cascsocket)写的。OnReceive事件一直不触发

OnReceive事件一直不触发服务端是用API写的,客户端是用CSocket(Cascsocket)写的。
OnReceive事件一直不触发服务端是用API写的,客户端是用CSocket(Cascsocket)写的。
::OnReceive(int   nErrorCode)  
{
//   With   Visual   C++   2003,   this   patch   is   needed   because   for   an   unknown   reason   socket   notifications   are   not   send
OutputDebugString( "LineID==1 ");    
VERIFY(AsyncSelect(FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|   FD_CONNECT   |   FD_CLOSE));
       
CAsyncSocket::OnReceive(nErrorCode);
//         AddSystemText( "Do   Receive ");
//ASSERT(m_pClient   !=   NULL);
       
if   (m_pClient   !=   NULL)
{
if   (m_pClient-> ProcessPendingRead(nErrorCode))
{
CString   strSocketAddress;
UINT         unPort   =   0;

//   Restore   to   the   default   notification
if   (GetSockName(strSocketAddress,   unPort)   !=   0)
VERIFY(AsyncSelect());
}
}
}
这个事件一直不触发,急!

[解决办法]
可能是你一开始创建Socket的时候没写触发事件,真不行你就把
VERIFY(AsyncSelect(FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT| FD_CONNECT | FD_CLOSE));
放到Connent语句执行成功的情况下的下面。
[解决办法]
那你把.\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src\mfc\sockcore.cpp添加到项目文件中,在CAsyncSocket::AsyncSelect(long lEvent)这里设一个断点,看看到底执行过没有。如果那函数里面的WSAAsyncSelect已经执行过了还这样,那我也没辙了……

热点排行