Я тестирую поведение некоторого клиентского программного обеспечения, и мне нужно написать программное обеспечение, которое имитирует функциональность, подобную маршрутизатору, предпочтительно с использованием чего-то простого, например, сокетов UDP. Все, что ему нужно сделать, это получить пакет, изменить время жизни и отправить его обратно. Это возможно в обычной Java? Или вы делаете что-то вроде следующего:
- Прослушивание сокета A
- Для КАЖДОГО полученного пакета udp откройте НОВЫЙ сокет, установите время для жизни на этом сокете и отправьте его обратно (или это невозможно / не эффективно?)
- Получатель получает пакет с измененными значениями, которые выглядят так, как будто он прошел некоторые прыжки (но в действительности этого не произошло)
Таким образом, возможны два подхода - редактирование полученного пакета напрямую (и затем просто отправка обратно) или создание нового пакета, копирование значений из исходного и установка соответствующих параметров заголовков / сокетов перед отправкой.
РЕДАКТИРОВАТЬ : «маршрутизатор» вообще не выполняет сложной маршрутизации, такой как пересылка на другие маршрутизаторы ... он просто уменьшает поле заголовка ttl полученного сообщения и отправляет сообщение обратно клиенту.