..........
recv(*pSock,temp,8096,0);
..............这样的接收好像是同步的,也就是要等收完了才能回。有没有办法recv进行异步接收呢?
也就是我能用recv接收一下,如果没有任何东西就返回。

解决方案 »

  1.   

    你可以用如下函数判断是否有数据可读,如果可读,再用 recv 接收bool IsReadable(SOCKET hSocket)
    {
      timeval TimeOut = { 0, 0 };
      
      fd_set ReadSet;
      FD_ZERO(&ReadSet);
      FD_SET(hSocket, &ReadSet);
      int Status = select(0, &ReadSet, 0, 0, &TimeOut);  if(Status == 0 || Status == SOCKET_ERROR)
        return false;
      
      return true;
    }
      

  2.   

    设置成异步模式  DWORD bAsync = 1;
      ioctlsocket(hSocket, FIONBIO, &bAsync);
      

  3.   

    baojian88888说得很详细啊,那个IsReadable函数直接使用就行了。如果返回0表示不用调recv函数,如果返回1就赶快......