Как сделать keepalive http-запрос с помощью curl? - PullRequest
7 голосов
/ 22 мая 2011

Как я могу запросить несколько страниц с одного веб-сервера в рамках одного и того же соединения?

Таким образом, клиентская сторона должна извлекать ответ для каждого запроса, конечно же, задача сервера - сделать ответ в том же порядке, что и запрошенный.

Кто-нибудь знает хитрость?

1 Ответ

6 голосов
/ 22 мая 2011

Я не знаю, действительно ли вы имели в виду «одновременный», но из описания я считаю, что вы просто хотите повторно использовать соединение. Если вы просто perform два запроса к одному и тому же серверу, он должен повторно использовать соединение

persistant.c

/* get the first document */ 
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/");
res = curl_easy_perform(curl);


/* get another document from the same server using the same
   connection */ 
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/docs/");
res = curl_easy_perform(curl);

Вот части вывода:

* About to connect() to example.com port 80 (#0)
*   Trying 192.0.32.10... * connected
* Connected to example.com (192.0.32.10) port 80 (#0)

[...]

* HTTP/1.0 connection set to keep alive!
< Connection: Keep-Alive
Connection: Keep-Alive

[...]

* Connection #0 to host example.com left intact
* Re-using existing connection! (#0) with host example.com
* Connected to example.com (192.0.32.10) port 80 (#0)

РЕДАКТИРОВАТЬ В свете комментария

В этом случае вам необходим интерфейс multi. Интерфейс multi говорит:

Включение нескольких одновременных передач в одном потоке без делая это сложным для применение.

Например, см. multi-double.c (" Просто загрузите два файла HTTP! ").

...