- Notifications
You must be signed in to change notification settings - Fork4
jamboree/act
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ASIO Cooperative Task
- Boost > 1.66.0
async echo server
task<void>session(asio::ip::tcp::socket sock){try {char buf[1024]; std::cout <<"connected:" << sock.remote_endpoint() << std::endl;for ( ; ; ) { act::error_code ec;auto len =co_awaitact::read_some(sock,asio::buffer(buf), ec);if (ec == asio::error::eof)co_return;co_awaitact::write(sock,asio::buffer(buf, len)); } }catch (std::exception& e) { std::cout <<"error:" << sock.remote_endpoint() <<":" << e.what() << std::endl; }}task<void>server(asio::io_service& io,unsignedshort port){ asio::ip::tcp::endpoint endpoint{asio::ip::tcp::v4(), port}; asio::ip::tcp::acceptor acceptor{io, endpoint}; asio::ip::tcp::socket sock{io}; std::cout <<"server running at:" << endpoint << std::endl;for ( ; ; ) {co_awaitact::accept(acceptor, sock);session(std::move(sock)); }}intmain(int argc,char *argv[]){ asio::io_service io;server(io,std::atoi(argv[1])); io.run();return EXIT_SUCCESS;}
Copyright (c) 2015-2018 JamboreeDistributed under the Boost Software License, Version 1.0. (See accompanyingfile LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)