当我尝试通过HTTP协议使用流套接字下载一组文件时,它仅从我尝试下载的第一个文件中获取数据。
假设如下所示的循环...
char* file = (char*) malloc(enough_space);
char page[] = {"www.foobar.com"};
for(int n=0 ; n<10 ; n++)
{
sprintf(file, "file%i.html", n);
fopen(file, "wb");
sprintf(request, "GET %s HTTP/1.1\nHost: %s\n\n", file, page);
write( socket, request, strlen(request) );
read_file(output_file);
fclose(output_file);
}
首先建立连接的地方。
这段代码会给我file1.html,包括服务器的头文件。但是只有第一个文件,这使我感到困惑。
预先感谢。
HTTP的设计使通过TCP连接只能下载一个文件。要通过一个TCP连接下载多个文件,可以使用HTTP管道。您可以在此处了解更多信息:HTTP管道请求文本示例
或者,您可以只使用可以处理此问题的众多库之一,也可以使用许多其他HTTP警告:libcurl,libsoup ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句