小弟的程序里需要接受从服务器端传输过来的数据,但是不知道数据的具体大小(大概不超过10K).如果用recv()一次接收不完这么多的数据的话怎么做才知道数据发送完了并且得出数据的具体大小.请给出具体帮助,谢谢了..

解决方案 »

  1.   

    不断的收,.直到招收函数返回错误为止,检查这个错误. 如果不是SOCKET本身的问题,如连接中断, 超时,等.则是因为数据已经没有了.
      

  2.   

    用非阻塞方式,关心接收事件.用CAsyncSocket?(是不是这样写来着)
    重载OnRecvi....
      

  3.   

    如果是 UDP 的可以用 ioctlsocket(hSocket, FIONREAD, &dwBytes) 来检测,如果是 TCP 的则要用krh2001(边城浪子) 的方法。
      

  4.   

    举个例子,随手写的
    int k= 1;
    while(k>0)
    {
         k=recv();
         if(k==SOCKET_ERROR)
        {
                break;
        }}