网站首页 文章专栏 基于C++20 协程的http 库--cinatra
请教一个问题: 在尝试使用 4.静态文件服务 的时候,
coro_http_server server(1,9001);
server.async_start();
std::this_thread::sleep_for(5s);
coro_http_clinet client{};
auto result = client.async_get("http://127.0.0.1:9001");
assert(result.status==200); // ->这句编译不能通过,报告
class "async_simple::coro::Lazy<cinatra::resp_data>" has no member "status"
像这样形式的代码,应该怎么获取 cinatra::resp_data的数据呢?
@solomon
少了co_await
async_get 是协程接口,你需要通过co_await 去调用它。
@qicosmos
我是这样做的,
1 把 4.静态文件服务 的代码复制到int main()中,报告 main cannot a coroutine;
2 然后改为定义在一个函数里; 象这样 void async_start(){
// build && setup web server
// sleep 5 seconds
coro_http_client client{};
auto res = co_await client.async_get("http://127.0.0.1:9001");
assert(res.status == 200);
}
编译的时候,报告错误:
Error C2039 'promise_type': is not a member of 'std::coroutine_traits<void>'
3 改为在windwos 11 ubuntu下(wsl), 使用clang 16.0.6 进行编译
报告 ..../ylt/thirdparty/cinatra/coro_http_client.hpp:10:10: fatal error: 'span' file not found // #include <span>
@qicosmos
我找到cinatra的项目,看其中的 异步 客户端 的使用例子,弄明白了; 谢谢你的回复!
purecpp
一个很酷的modern c++开源社区
purecpp社区自2015年创办以来,以“Newer is Better”为理念,相信新技术可以改变世界,一直致力于现代C++研究、应用和技术创新,期望通过现代C++的技术创新来提高企业生产力和效率。
社区坚持只发表原创技术文章,已经累计发表了一千多篇原创C++技术文章;
组织了十几场的C++沙龙和C++大会,有力地促进了国内外C++开发者之间的技术交流;
开源了十几个现代C++项目,被近百家公司所使用,有力地推动了现代C++在企业中的应用。
期待更多的C++爱好者能参与到社区C++社区的建设中来,一起为现代C++开源项目添砖加瓦,一起完善C++基础设施和生态圈。
微信公众号:purecpp, 社区邮箱: purecpp@163.com