Я пишу клиент-серверное приложение на C ++ с помощью Boost Asio.У меня есть работающий сервер, и рабочий процесс на сервере - это то, что я хорошо понимаю.
Мое клиентское приложение корректно обрабатывает соединение, как показано в примерах Asio, после чего оно обменивается рукопожатием с сервером.Однако после этого пользователи должны иметь возможность отправлять запросы на сервер, когда и как они хотят, и именно здесь у меня возникает проблема с пониманием парадигмы.
Первоначальный рабочий процесс выглядит примерно так:
OnConnected() { SendHandshake() }
SendHandshake() { async.write_some(handshake...), async_read_some(&OnRead) }
OnRead() { ReadServerHandshake() *** }
И пользователи будут отправлять сообщения, используя Запись (msg):
Write (msg) { async_write_some(msg,&OnWrite), async_Read_some(&OnRead) }
OnWrite() {}
РЕДАКТИРОВАТЬ: Перефразируя вопрос, чтобы быть более ясным, вот сценарий:
После завершения первоначального рукопожатия Клиент используется только для отправки запросов на сервер, на который он получит ответ.Так, например, пользователь отправляет запись.Клиент ожидает завершения операции чтения, читает ответ и что-то делает с ним.Следующая запись пользователя появится, скажем, через 5 минут.Не прекратит ли в это время работу io_service, поскольку между последним чтением ответа и следующей записью нет ожидающих асинхронных операций?