gpt4 book ai didi

c++ - boost asio 和 coroutine2 示例

转载 作者:可可西里 更新时间:2023-11-01 18:19:50 31 4
gpt4 key购买 nike

在阅读 coroutine2 的文档时,我发现了一个不错的 snippet显示如何将其与 asio

一起使用的代码

引用文档中的代码:

void session(boost::asio::io_service& io_service){
// construct TCP-socket from io_service
boost::asio::ip::tcp::socket socket(io_service);

try{
for(;;){
// local data-buffer
char data[max_length];

boost::system::error_code ec;

// read asynchronous data from socket
// execution context will be suspended until
// some bytes are read from socket
std::size_t length=socket.async_read_some(
boost::asio::buffer(data),
boost::asio::yield[ec]);
if (ec==boost::asio::error::eof)
break; //connection closed cleanly by peer
else if(ec)
throw boost::system::system_error(ec); //some other error

// write some bytes asynchronously
boost::asio::async_write(
socket,
boost::asio::buffer(data,length),
boost::asio::yield[ec]);
if (ec==boost::asio::error::eof)
break; //connection closed cleanly by peer
else if(ec)
throw boost::system::system_error(ec); //some other error
}
} catch(std::exception const& e){
std::cerr<<"Exception: "<<e.what()<<"\n";
}
}

但是我无法在 asio 文档中找到工作示例,并且尝试在 coliru 上编译此代码段会给我与 yield

相关的编译器错误

您是否知道如上例所示使用 coroutine2 的最小客户端/服务器实现?

最佳答案

AFAIK boost.asio 仅支持 boost.coroutine,不支持 boost.coroutine2

关于c++ - boost asio 和 coroutine2 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38987158/

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