當我嘗試通過HTTP協議使用流套接字下載一組文件時,它僅從我嘗試下載的第一個文件獲取數據。
假設像下面這樣的循環......無法下載多個帶有套接字的文件C
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開始,所以第一個文件應該是file0.html而不是file1.html。我認爲還有更多的事情要做。 – Nostromoo 2014-10-27 21:21:06
對於給定一個連接的多個請求,HTTP不允許這樣做。你想嘗試http://en.wikipedia.org/wiki/HTTP_persistent_connection - 但總的來說,我建議使用諸如libcurl之類的第三方庫來處理所有錯綜複雜的HTTP,包括SSL,重定向,編碼和內容類型。 – deets 2014-10-27 21:23:34