c - libcurl 对多个并发请求使用 1 个连接

标签 c libcurl

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

最佳答案

如果您真的想在同一个连接上并行执行多个请求,则需要使用 HTTP/2,并且所有这些请求都必须发送到同一主机。不过,这是一种常见的情况。然后你需要让 libcurl 使用 HTTP/2,你需要使用多接口(interface)。就像在 http2-download.c 示例中一样。

如果您有多个指向不同主机的 URL 并且想要限制用于传输这些的连接数,您可以使用简单的界面并一个接一个地获取 URL 以减少使用的连接数 - 结合 CURLOPT_MAXCONNECTS .

如果你想使用多接口(interface),你仍然可以允许 libcurl 对 CURLMOPT_MAX_TOTAL_CONNECTIONS 和 friend 进行有限数量的并行传输,即使你一次添加一百个简单的句柄。或者您可以限制并发添加的 easy handles 的数量。

关于c - libcurl 对多个并发请求使用 1 个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44885935/

相关文章:

c - 为什么设置断点会使我的代码工作?

c - 矩阵排序段错误

c - 我的程序(获取函数)有什么问题?

c - 编译时 libcurl 错误(负值)

android - cpuminer Android 中的 Curl 库

c++ - ssl 对等证书或 ssh 远程 key 不正确 - C

c++ - COM 初始化和清理是否适合函数级粒度?

java - 在 Java 中,如何从已打开的 C 套接字的文件描述符中获取 Socket 或 DatagramSocket?

c - 从 C 中 LoadLibrary 加载的函数传回数据?

c++ - 将静态 libcurl 添加到 Code::Blocks IDE