8 #include <boost/asio.hpp>
10 namespace net = boost::asio;
13 using tcp_socket = net::use_awaitable_t<>::as_default_on_t<net::ip::tcp::socket>;
14 using timer_type = net::use_awaitable_t<>::as_default_on_t<net::steady_timer>;
17 example(boost::asio::ip::tcp::endpoint ep, std::string msg,
int n)
20 auto ex = co_await net::this_coro::executor;
22 tcp_socket socket{ex};
23 co_await socket.async_connect(ep);
26 auto dbuffer = net::dynamic_buffer(buffer);
27 for (
int i = 0; i < n; ++i) {
28 co_await net::async_write(socket, net::buffer(msg));
29 auto n = co_await net::async_read_until(socket, dbuffer,
"\n");
35 }
catch (std::exception
const& e) {
36 std::cerr <<
"Error: " << e.what() << std::endl;
40 int main(
int argc,
char* argv[])
47 sessions = std::stoi(argv[1]);
48 msgs = std::stoi(argv[2]);
53 tcp::resolver resv{ioc};
54 auto const res = resv.resolve(
"127.0.0.1",
"55555");
55 auto ep = *std::begin(res);
57 for (
int i = 0; i < sessions; ++i)
58 net::co_spawn(ioc, example(ep,
"Some message\n", msgs), net::detached);
61 }
catch (std::exception
const& e) {
62 std::cerr << e.what() << std::endl;