我正在基础代码上开发一个程序,负责低级套接字编程。问题似乎是它知道(显然)何时停止关闭连接的唯一方法是接收的字节数超过“Content-length”字段中给出的字节数。但由于该字段没有为许多网站设置,我不知道如何告诉它停止。现在发生的是,在这些情况下,整个文件被下载但仍然保持连接。
传入的数据/消息中必须要查找某些内容?感谢。
答案 0 :(得分:0)
由于您提到Content-Length
标头,您是从HTTP服务器下载的吗?如果是,则当Content-Length
标头指示正在使用Transfer-Encoding
传输时,省略chunked
标头,这意味着数据以小的顺序块发送(因此完整大小不能提前在Content-Length
标题中报告。每个块都有自己的头,指定其块的大小。您需要解析并丢弃每个块头,这样就不会将它们保存在目标文件中,只保存在块数据中。当您收到报告数据大小为0的块头时,将到达文件末尾。
阅读RFC 2616第3.6.1节了解更多详情。