Как сделать запрос HTTP keepalive с curl?

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

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

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

1 ответов


Я не знаю, действительно ли вы имели в виду "параллельный", но из описания я считаю, что вы просто хотите повторно использовать соединение. Если вы просто 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 интерфейс. The multi interafce говорит:

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

пример см. В разделе multi-double.c ("просто скачайте два HTTP-файла!").