![用CSocket重写OnReceive()函数时,出现收不到的情况 js 函数重写](http://img.aihuau.com/images/02111102/02050322t011da6812a20dbc80e.png)
void CChatSocket::OnReceive( int nErrorCode)
{
m_pDoc->ProcessPendingRead();
CSocket::OnReceive(nErrorCode);
}
前几天用CSocket + CSocketFile写了一个聊天程序,经常发现客户端明明发送了消息,但是服务器端OnReceive函数就是不响应,上网搜索找到了答案,在处理完以后加上AsyncSelect(FD_READ);即上面的程序变为
void CChatSocket::OnReceive( int nErrorCode)
{
m_pDoc->ProcessPendingRead();
AsyncSelect(FD_READ);//提请一个“读”的网络事件
CSocket::OnReceive(nErrorCode);
}
编程中遇到这个问题,发现很多人都遇到过这个问题。
症状如下:Socket连接后只能发送一次消息,发送第二次消息的时候,另一方就接收不到;
原因是:没有让Socket改变响应事件的发式
解决方法:在OnReceive()中,Receive()后调用AsyncSelect(FD_READ);