我在写一个 HTTP客户端,现在遇到了一点小问题,描述如下。
我的客户端从HTTP服务器读取数据,数据是以 Content-Length的形式发送下来的,但是数据的长度是不确定的。现在因为不清楚一次下发下来的数据的长度是多少,所以我每次去读取1024长度。
出现的情况是
1.如果发送下来的数据长度小于1024,那一次性读完,OK。
2.发送下来的数据长度大于1024,比如10000,那我如何判断所有的数据都被我recv光了呢?
我的客户端从HTTP服务器读取数据,数据是以 Content-Length的形式发送下来的,但是数据的长度是不确定的。现在因为不清楚一次下发下来的数据的长度是多少,所以我每次去读取1024长度。
出现的情况是
1.如果发送下来的数据长度小于1024,那一次性读完,OK。
2.发送下来的数据长度大于1024,比如10000,那我如何判断所有的数据都被我recv光了呢?
循环判断是否大于10000,
小于则读取1024长度,continue
等于则break,
大于则10000-实际读取长度,剩下的就是不到1024的长度,接收一次剩余数据长度,break.
还是按协议来吧http协议有正文大小说明的
content-length或者分块传输chunked的话 读到0\r\n\r\n 就是读完了