Проблема
Некоторые мои друзья играют в игру, в которой участвуют максимум 4 игрока. Я пытаюсь написать программу, которая позволит пятому человеку следить за тем, что происходит в игре, фактически не находясь в игре.
Предыстория
Многопользовательская часть игры функционирует следующим образом:
Один игрок назначается «хозяином». Все остальные игроки подключаются к хосту, вводя IP-адрес хоста. Компьютер хоста отвечает за управление ИИ игры. Когда в игре происходит событие, хост-копия игры отправляет событие в игру каждого из других игроков (клиентов). Если игрок-клиент выполняет действие, его игра отправляет действие хосту, который, в свою очередь, отправляет его остальным игрокам, чтобы действие любого игрока было видно всем остальным. Хост и клиенты используют один TCP-порт, предустановленный в файле конфигурации игры (например, порт 58282). Игра представляет собой стратегию в реальном времени (не пошаговую).
Ограничения
1. Механика игры неизменна. Он предварительно скомпилирован, и нет возможности изменить многопользовательскую механику. 2. Игра использует TCP для связи между сервером и клиентами
Вопрос
Есть ли способ иметь отдельную программу, которая работает либо на хост или клиентский компьютер прослушивают порт игры (во время игры)? Я знаю, что TCP разрешает только один сокет на порт для каждого IP-адреса, поэтому одновременное прослушивание игрой и отдельной программой одного и того же порта проблематично. Предполагая, что я запускаю внешнее приложение перед игрой и приложение прослушивает порт игры, есть ли способ для приложения услышать хост через игровой порт, взять/скопировать эту информацию, а затем перенаправить ее в игру? (Что-то вроде местного посредника)
Главный вопрос
Возможно ли это, учитывая ограничения? Я иду к этому наилучшим образом?