libcurl为多个并发请求使用1个连接

时间:2017-07-03 12:44:28

标签: c libcurl

我想使用1个CURL句柄,并且假设有10个并发请求使用此句柄。这可能吗?问题是如果我想要例如100个并发请求它打开太多连接,有时服务器拒绝回答,因为已经从同一个IP打开了太多连接。但是,如果我有一个句柄并在多个线程中使用此句柄来处理许多可能解决问题的请求。知道这是否可行?

1 个答案:

答案 0 :(得分:5)

如果您确实想在同一个连接上并行执行多个并行请求,则需要使用HTTP / 2,并且必须对同一主机进行所有这些请求。这是一种常见的情况。然后,您需要让libcurl使用HTTP / 2,并且您需要使用多接口。就像在http2-download.c示例中一样。

如果您有多个不同主机的URL,并希望限制用于传输这些主机的连接数,则可以使用easy界面逐个获取URL以减少已使用连接的数量 - 与{结合使用} {3}}

如果你想使用多接口,你仍然可以允许libcurl与CURLOPT_MAXCONNECTS和朋友进行有限数量的并行传输,即使你一次添加了一百个简单的句柄。或者你可以限制同时添加的简易句柄的数量。