我在写一个 HTTP客户端,现在遇到了一点小问题,描述如下。
我的客户端从HTTP服务器读取数据,数据是以 Content-Length的形式发送下来的,但是数据的长度是不确定的。现在因为不清楚一次下发下来的数据的长度是多少,所以我每次去读取1024长度。
出现的情况是
1.如果发送下来的数据长度小于1024,那一次性读完,OK。
2.发送下来的数据长度大于1024,比如10000,那我如何判断所有的数据都被我recv光了呢?

解决方案 »

  1.   

    欲读取的数据长度累加1024+1024+1024...
    循环判断是否大于10000,
    小于则读取1024长度,continue
    等于则break,
    大于则10000-实际读取长度,剩下的就是不到1024的长度,接收一次剩余数据长度,break.
      

  2.   

    这样不可靠的,
    还是按协议来吧http协议有正文大小说明的
    content-length或者分块传输chunked的话  读到0\r\n\r\n 就是读完了