How can I request multiple pages from the same web server within the same connection?
So the client side need to extract the response for each request,of course it's the server's job to make the response in the same order as requested.
Anyone knows the trick?
Keep-Alive is enabled by explicitly requesting it via HTTP header. If you don't have access to your web server configuration file, you can add HTTP headers yourself by using . htaccess file.
When you are using the easy API, or, more specifically, curl_easy_perform() , libcurl will keep the pool associated with the specific easy handle. Then reusing the same easy handle will ensure it can reuse its connection.
The HTTP keep-alive header maintains a connection between a client and your server, reducing the time needed to serve files. A persistent connection also reduces the number of TCP and SSL/TLS connection requests, leading to a drop in round trip time (RTT).
Keep-alive connections are enabled by default in HTTP/1.1 while not in HTTP/1.0. HTTP/1.0 was designed to close the connection after every request between client and server. We can actually check this difference using telnet .
I don't know if you really meant "concurrent", but from the description I believe you just want to reuse the connection. If you simply perform
two requests to the same server, it should reuse the connection
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);
Here are portions of the output:
* 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)
EDIT In light of comment
In that case you need the multi
interface. The multi
interafce says:
Enable multiple simultaneous transfers in the same thread without making it complicated for the application.
For an example, see multi-double.c
("Simply download two HTTP files!").
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With