【问题标题】:libcurl: how to get a file descriptor from an active connection?libcurl:如何从活动连接中获取文件描述符?
【发布时间】:2019-02-13 01:00:34
【问题描述】:

基于此处描述的主题 (Using libcurl multi interface for consecutive requests for same "easy" handle),我的组织有用于 select 和 poll 的包装类来处理来自文件描述符的输入/输出。为了与我们的包装类保持一致,我想获取每个简单句柄的文件描述符。我正在使用多接口在实时应用程序中处理多个简单的句柄。

我知道我可以使用 curl_multi_fd_set 来获取 FD 集。我可以遍历 FD 集以获取 FD 编号。但是,我不知道 FD 的相关简单句柄。另外,如果一个 FD 被打开超过 FD_SET 限制,我不会得到那个 FD。

我正在考虑的另一个选项是使用 curl_easy_getinfo 并使用 ACTIVESOCKET 或 LASTSOCKET 选项。我的 libcurl 很旧,所以我无法使用 ACTIVESOCKET 进行测试。但是,我使用 curl_multi_perform 执行的一个小测试,然后是 curl_easy_getinfo(LASTSOCKET) 给我的结果为 -1 - 表示没有文件描述符。轻松处理请求是在 google.com 等网站上执行的。我会尝试将我的 libcurl 更新到较新的版本,看看我是否使用 ACTIVESOCKET 得到不同的结果。

还有其他方法可以从简单句柄中获取文件描述符吗?

【问题讨论】:

    标签: libcurl


    【解决方案1】:

    我建议您改用multi_socket API,而curl_multi_socket_action 是主要驱动程序。

    这个 API 调用你告诉你每个套接字要等待,然后你等待那个/那些并告诉 libcurl 当那个套接字上发生了什么事情时。它使您可以很容易地将 libcurl 合并到您自己的 IO 循环/套接字包装系统中。

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 2011-06-27
      • 1970-01-01
      • 2010-12-28
      • 2014-03-14
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      相关资源
      最近更新 更多