当我尝试通过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,包括它来自服务器的标题..但只有第一个文件,这让我感到困惑..为了得到它们我还需要做什么?
先谢谢。
答案 0 :(得分:1)
HTTP的设计使得只能通过TCP连接下载单个文件。要通过一个TCP连接下载多个文件,可以使用HTTP Pipelining。您可以在此处阅读更多内容:HTTP pipelining request text example
或者你可以使用许多库中的一个来处理这个问题,以及许多其他的HTTP注意事项:libcurl,libsoup ...