MFC网络编程!在调用MySock::OnSend()后,发起AsyncSelect(FD_READ);无法执行到MySock::OnReceive(),如下
void MySock::OnSend(int nErrorCode)
{
AfxMessageBox("OK6");
// TODO: Add your specialized code here and/or call the base class
int m_nL=Send(m_szBuffer,m_nLength,0);
AfxMessageBox("Mysock onsend-1");
m_nLength=0;
//CString strtest=*m_szBuffer;
memset(m_szBuffer,0,sizeof(m_szBuffer));
AsyncSelect(FD_READ);
CAsyncSocket::OnSend(nErrorCode);
}
这个是有被执行的,下一步希望应用程序执行void MySock::OnReceive(int nErrorCode) ,如下所示,但是,现在发现OnReceive根本没有被执行,加入后断点测试得OnReceive未执行。
void MySock::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
AfxMessageBox("OnReceive1");
m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);
CCSocketClientApp* pApp=(CCSocketClientApp*)AfxGetApp();
CCSocketClientDlg* pDlg=(CCSocketClientDlg*)pApp->m_pMainWnd;
pDlg->m_MSGS.InsertString(0,m_szBuffer);
memset(m_szBuffer,0,sizeof(m_szBuffer));
CAsyncSocket::OnReceive(nErrorCode);
}
在服务端的Onsend有执行
void CSrv::OnSend(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
//char str[]="string";
Send(m_szBuffer,m_nLength,0);
//Send(str,7,0);
//CAsyncSocket::OnSend(nErrorCode);
}
意味着服务端有回发消息,但是,客户端的OnReceive()没有被触发
[解决办法]
从你的代码看,服务器端应该在OnReceive中发送数据才对。这有socket的源码,你参考一下:
http://download.csdn.net/detail/geoff08zhang/4571358