| 41 | } |
| 42 | |
| 43 | void start_server(asio::io_context& io_context, unsigned short port) { |
| 44 | tcp::acceptor a(io_context, tcp::endpoint(tcp::v4(), port)); |
| 45 | std::cout << "Listen port " << port << " successfully.\n"; |
| 46 | for (;;) { |
| 47 | auto [error, socket] = accept(a); |
| 48 | if (error) { |
| 49 | std::cout << "Accept failed, error: " << error.message() << '\n'; |
| 50 | continue; |
| 51 | } |
| 52 | std::cout << "New client coming.\n"; |
| 53 | session(std::move(socket)); |
| 54 | |
| 55 | std::error_code ec; |
| 56 | socket.shutdown(asio::ip::tcp::socket::shutdown_both, ec); |
| 57 | socket.close(ec); |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | int main(int argc, char* argv[]) { |
| 62 | try { |