Вы правильно используете один asio io_service
. (Вам, конечно, разрешено использовать столько, сколько вы хотите, но более эффективно просто использовать один, так как он блокирует в потоке и вы избегаете ненужного переключения контекста. Кроме того, вы можете вызывать io_service::run
из нескольких потоков, если хотите использовать несколько процессоров.)
Инкапсулируйте acceptor
и socket
в классе, как показано во многих примерах asio, и передайте io_service конструктору класса по ссылке. Затем вы можете bind
принять получателя по желаемому адресу, listen
и вызвать async_accept
в методе класса, который вы вызываете.