无法在C中使用套接字下载多个文件

时间:2014-10-27 21:12:14

标签: c sockets http

当我尝试通过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,包括它来自服务器的标题..但只有第一个文件,这让我感到困惑..为了得到它们我还需要做什么?
先谢谢。

1 个答案:

答案 0 :(得分:1)

HTTP的设计使得只能通过TCP连接下载单个文件。要通过一个TCP连接下载多个文件,可以使用HTTP Pipelining。您可以在此处阅读更多内容:HTTP pipelining request text example

或者你可以使用许多库中的一个来处理这个问题,以及许多其他的HTTP注意事项:libcurl,libsoup ...