我用ClassWizzard建立并重载了OnReceive函数,为什么当客户端Send来的时候 Receive就可以,而OnReceive不响应?
请有经验的朋友指教。

解决方案 »

  1.   

    由ClassWizzard生成MySocket类(基类为CSocket)。
    在MySocket.h文件里我没任何改写:
    在MySocket.cpp文件里由我改写的代码:
    MySocket::MySocket()
    {
    CMyApp *pApp=(CMyApp*)AfxGetApp();
    CMyDlg *pDlg=(CMyDlg*)pApp->m_pMainWnd;
    pDlg->m_StreamState = 1;                      
    pDlg->m_ack = false;
    }
    void MySocket::OnReceive(int nErrorCode) 
    {
    CMyApp *pApp=(CMyApp*)AfxGetApp();
    CMyDlg *pDlg=(CMyDlg*)pApp->m_pMainWnd;
    char ackbuf[3];
    memset(ackbuf,'\0',3);
    switch(pDlg->m_StreamState)
    {
    case 1:
    break;
    case 2:
    Receive(ackbuf,3);
    if(strcmp(ackbuf,"ok")==0)
    {
    pDlg->m_ack = true;
    }
    break;
    default:
    break;
    }
        

    CSocket::OnReceive(nErrorCode);
    }
      

  2.   

    还有,我是在线程函数里创建Socket的,代码如下。
    这样一来,我的线程怎么才能收到系统通知(远方有数据到达)呢?
    MySocket* ClientSocket=new MySocket;各位大虾,我问的问题也不多,分对我来说没什么意义,如果谁解决了这个问题,我再加200分。
      

  3.   

    CSocket需要和某个窗口关联的,这样才能接收消息
      

  4.   

    那么我有没有办法在线程函数的基础上有什么办法使得到这个FD_Read消息?