我利用CAsyncSocket派生类编写客户机服务器模型,客户机服务器已经联机成功,也能发送数据让其它测试程序收到,但就是触发不了OnReceive事件,以至于收不到数据。请大家帮帮忙阿!
void CNetSocket::OnReceive(int nErrorCode)
{
if(nErrorCode==0)
m_pDlg->OnReceive();
CAsyncSocket::OnReceive(nErrorCode);
}
void CNetSocket::OnReceive(int nErrorCode)
{
if(nErrorCode==0)
m_pDlg->OnReceive();
CAsyncSocket::OnReceive(nErrorCode);
}
我想这就是问题了,
还有, 你的聊天室如何控制受到的信息啊,
都是MyDialog::OnReceive处理??
几乎同时到达的先后两个数据, 你就不怕前面的没有处理完, 后面的就进入缓冲区了?
服务端:
CListenSocket和CConnectSocket
客户端:
CClientSocket
通常代码是
CListenSocket listen;
...
listen.Create()
listen.Listen()
...
//CListenSocket重载OnAccept
CConnectSocket * connect=new CConnectSocket;
listen.Accept(*connect);
...
//CConnectSocket重载OnReceive()
Receive()
...
//和OnClose()
Close()
不知你是怎么做的(对象是否搞错了)
可是我客户端的派生类里只有OnReceive(),也收不到数据啊!
或自己调用winsock的Receive写一个函数
我加了一句m_sConnectSocket.AsyncSelect(FD_READ|FD_WRITE|FD_OOB);就可以了!