如题

解决方案 »

  1.   

    非阻塞套接口对端口进行读取操作时,如果没有数据,RECV就立即返回错误。所以无法正常RECV到数据.你必须重载CSocket的OnRecieve(),在OnRecieve中RECV数据,这样就不会错了。
      

  2.   

    重载 CSocket::OnRecieve()
    在这里可以写如下的代码, 
    pCMyClassObj->Receive(this); //this是这个socket对象.CMyClass::Receive(CMySock* pSock)
    {
    pSock->Receive(Buf,....);
    }
    明白?
      

  3.   

    关键在于必须调用select()来判断异步的套接字是否可读,
    如果可读就调用recv()正常读取数据,否则当然就不读了。
    你的问题是没有使用select(),不论阻塞的还是异步的
    套接字读取数据都应该使用select()。