创建了一个CAsyncSocket的继承类CServerSocket,声称对象来接接收消息
CServerSocket::CServerSocket(void)
{
m_pView =NULL; // m_isConnected = FALSE;
}
CServerSocket::CServerSocket(CServerView* pView)
{
m_pView = pView;
}CServerSocket::~CServerSocket()
{
}
void CServerSocket::OnReceive(int nErrorCode) 
{
// TODO: Add your specialized code here and/or call the base class

CServerView *pView = CServerView::GetView();
pView->OnReceive(nErrorCode); CAsyncSocket::OnReceive(nErrorCode);
}void CServerSocket::OnSend(int nErrorCode) 
{
// TODO: Add your specialized code here and/or call the base class CServerView *pView = CServerView::GetView();
pView->OnSend(nErrorCode);

CAsyncSocket::OnSend(nErrorCode);
}void CServerSocket::OnClose(int nErrorCode) 
{
// TODO: Add your specialized code here and/or call the base class
//    GetPeerName();
CServerView *pView = CServerView::GetView();
pView->OnClose(nErrorCode); CAsyncSocket::OnClose(nErrorCode);
}
void CServerSocket::OnConnect(int nErrorCode) 
{
// TODO: Add your specialized code here and/or call the base class
if (nErrorCode==0)
{
m_isConnected = TRUE;
CServerView *pView = CServerView::GetView();
pView->OnConnect(nErrorCode); AsyncSelect(FD_READ);  ////提请一个“读”的网络事件,准备接收
} CAsyncSocket::OnConnect(nErrorCode);
}另创建了一个继承类CNewSocket,来监听客户端的连接请求CNewSocket::CNewSocket()
{
}CNewSocket::~CNewSocket()
{
}void CNewSocket::OnAccept(int nErrorCode) 
{
// TODO: Add your specialized code here and/or call the base class CServerView *pView = CServerView::GetView();
pView->OnAccept(nErrorCode); CAsyncSocket::OnAccept(nErrorCode);
}问题是,能够监听到客户端的连接,并且向客户端发送消息客户端能够收到,但是,客户端发送消息给服务器时,函数CServerSocket::OnReceive(int nErrorCode)根本就不响应,请各位大虾指教??

解决方案 »

  1.   

    AsyncSelect(FD_READ);  ////提请一个“读”的网络事件,准备接收
    应该对客户端socket描述字进行,而不是对listen的socket进行
      

  2.   

    问一个问题:
       我用CAsyncSocket类写了个服务端程序,但不知道怎么回事,当客户端连接后,我每次只能够收到最后一个连接的客户端的数据,断点调试发现CMyClientSocket的OnRecieve函数也只对最后一个连接的客户端有响应,这是怎么回事,请lz指教!