【问题标题】:libcurl use 1 connection for multiple concurrent requestslibcurl 为多个并发请求使用 1 个连接
【发布时间】:2017-07-03 12:44:28
【问题描述】:

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

【问题讨论】:

  • 为线程中使用的 cURL 添加伪代码。参考linux.die.net/man/3/curl_easy_duphandle
  • @Pravin 问题很明显,我看不出添加任何代码的理由。 duphandle 错误:“新句柄不会继承任何状态信息、没有连接、没有 SSL 会话和 cookie。”

标签: c libcurl


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2016-05-20
    • 1970-01-01
    相关资源
    最近更新 更多