Я уже пару часов читаю документацию boost asio, и хотя я думаю, что документация действительно великолепна, я все еще немного запутался в том, как внедрить нужную мне систему.
Я должен передавать информацию из игрового движка в список компьютеров по протоколу TCP. Одна загвоздка в том, что, в отличие от традиционного паба / саба, компьютер, который распространяет информацию, на самом деле также является компьютером, который должен подключаться к подписчикам (вместо подписчиков, регистрирующихся у издателя). Это делается через файл конфигурации — список ip / портов вместе с данными, которые им требуются. Подписчики слушают, но не знают ip издателя. (Как примечание, я довольно новичок в сетевом программировании, так что, возможно, я что-то упускаю … но странно, что я не нахожу много информации об этом стиле «инвертированной» модели клиент-сервер …)
Я ищу предложения по внедрению такой системы с использованием boost asio. Конечно, я должен интегрировать сеть в уже существующий движок, поэтому вот что:
Что может быть хорошим способом обработки сообщений, отправляемых на несколько компьютеров каждый кадр? Используйте async_write, вызовите io_service.run и затем сбросьте каждый кадр? Будет ли лучше иметь io_service.run собственный поток? Или я должен просто использовать потоки и блокировать записи?
Я нашел ветку, которая касается части моего вопроса: использование io_service в игровом цикле —Boost :: Asio: io_service.run () против poll () или как интегрировать boost :: asio в mainloop. Я попробую несколько вещей и опубликую более определенный ответ, если найду хорошее решение.
Задача ещё не решена.
Других решений пока нет …