gpt4 book ai didi

c++ - 异步 http 客户端库和 glib 事件循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:05 25 4
gpt4 key购买 nike

我正在寻找一个具有特定需求的异步 http 客户端库:

  • 它一定有可能将其实现为 glibmm 源代码
  • 必须是单一威胁
  • 它必须有 lgpl、bsd、mit 或类似的许可证

为了将它作为一个 glibmm 源来实现,必须能够访问它的文件描述符,创建一个 Glib::PollFD 对象,然后我就可以开始了。

我一直在查看几个库,它们都有一些问题:

  • libcurl,几乎可以做我想做的事,在多源 API 中它有一个 curl_multi_fdset 函数,它返回 fd_set。问题是我不知道如何将 fd_set 转换为一个或多个 Glib::PollFD
  • Poco,有一个在 istream 中返回的 HttpSessionClient,我找不到从中进行解锁读取的方法。
  • Boost::Asio 要求使用 io_service 作为事件循环。

任何人都可以解决我在这些树库中看到的问题,或者建议替代库吗?

最佳答案

Glib::PollFD::PollFD(int fd) 是您想要的构造函数。 fd_set 只是一组整数 fds。 “集合”一词在数学意义上使用,即在一个集合中不能多次出现 fd,因此他们不将其称为数组或列表。 fd_set 只是一个固定大小的缓冲区。通过制作一个 fd_set 并向其中添加一些 fds 来尝试一下,然后在调试器中查看它或者只是将它转储为十六进制。

这是异步编程中的常见模式,您需要加入两个异步事件循环。虽然您可以使用超时轮询两个循环,但通常最好从一个事件循环中获取原始 fds,然后添加它们

关于c++ - 异步 http 客户端库和 glib 事件循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6796190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com