Рассмотрим следующую ситуацию:Перенаправление сетевых приложений трафика на уровне Data Link
У вас есть приложение вы tesing, но для того, чтобы проверить функциональность сети указанной программы, вам необходимо запускать несколько экземпляров и заставить их общаться друг с другом.
Возможные решения: - Запуск программного обеспечения на отдельных машинах, подключенных через WAN или LAN. - Запустите программное обеспечение на виртуальных машинах, все на одном компьютере.
Я не хочу использовать любой из этих методов (рассуждение не имеет значения). Я хочу знать если есть способ, что я могу изменить маршрут сети передачи из тестового приложения (идеально на любом языке programmming) таким образом, таким образом, что я могу запускать несколько экземпляров одного и того же программного обеспечения на одной компьютер, и заставить их вести себя так, как если бы они были единственным экземпляром, запущенным на этом компьютере.
Другими словами, я хочу иметь возможность кодировать приложение, чтобы каждый экземпляр прослушивал один и тот же «прослушивающий» порт (так как на каждом компьютере будет работать только один экземпляр на момент его создания). Затем я хочу знать, могу ли я перенаправить сетевые запросы на более низком уровне, чем приложение, чтобы они не мешали друг другу (столкновение с одним и тем же номером порта).
По существу, я хочу создать виртуальную среду, в которой только перенаправляет сетевые вызовы (тогда как виртуальная машина потребляет гораздо больше ресурсов и имеет более активное участие). Возможно ли это, и как я могу подойти к этой проблеме?
Спасибо!
UPDATE: Это более точное представление о том, что я хочу сделать:
В принципе, я хочу, чтобы запрограммировать другое приложение, которое прозрачно перенаправляет запросы на привязку имеющихся портов, и управляет, какие приложения связаны где. Итак, с точки зрения приложений все экземпляры привязаны к порту 1000, но на самом деле это другое приложение автоматически управляет, какой экземпляр связан там и избегает потенциальных конфликтов. Я чувствую, что это может быть достигнуто с помощью Windows Hooks, но я не уверен, как вы могли это реализовать?
Спасибо за ответ; Я не беспокоюсь о том, чтобы потратить время, чтобы установить это ...Я на самом деле рассматриваю его в отдельном проекте (оба из них - только я в свое время) и создавая интуитивное «решение» для всякий раз, когда это происходит. На самом деле я не забочусь о том, что тестовые приложения используют разные порты, но я хочу оставить код как есть (поэтому, если приложение предназначено для использования определенного порта прослушивания, вам не требуется изменять это). Я представляю решение, в котором у вас будет средний уровень между приложением и сокетами. См. Следующий комментарий, например ... – araisbec
В принципе, я хочу запрограммировать другое приложение, которое TRANSPARENTLY перенаправляет запросы привязки к доступным портам и управляет тем, какие приложения привязаны туда ... Итак, с точки зрения приложений все экземпляры привязаны к порту 1000 , но на самом деле это другое приложение автоматически управляет тем, какой экземпляр связан там, и избегает потенциальных конфликтов. Я чувствую, что это может быть достигнуто с помощью Windows Hooks, но я не уверен, как вы могли это реализовать? Я также добавляю это к самому вопросу. – araisbec
Вот проблема: 1) привязка к различным портам потребует перекрытия вызовов DLL (могут работать крючки), которые могут быть не слишком грубыми. 2) получение соединений для маршрутизации к правильной цели, скорее всего, потребует изменения сетевого драйвера, даже если это виртуальный, который является довольно амбициозным –