Java установить другой IP-адрес на DatagramSocket - PullRequest
0 голосов
/ 30 мая 2020

Я хочу смоделировать сеть на своем компьютере. Я хочу отправлять каждый пакет с другим IP-адресом. Как мне установить IP-адрес в Socket?

Например, я хочу установить свой IP-адрес 192.168.1.1 или 192.168.1.1/24. Как мне это сделать?

Я знаю только, как установить номер порта.

private static DatagramSocket socket; socket = new DatagramSocket(1024);

Могу ли я использовать DatagramSocket(int port, InetAddress laddr) для инициализации моего сокета?

если да, что я должен ввести в параметр «laddr»?

1 Ответ

1 голос
/ 30 мая 2020

Предполагая, что вы имеете в виду установить исходный IP-адрес - вы не можете. Сокет UDP привязан к определенному IP-интерфейсу (или интерфейсам) на вашем компьютере. IP-интерфейс - это то, что имеет адрес. Программа, использующая IP-сокеты, может только выбрать, какой существующий интерфейс использовать.

Обратите внимание, что даже если бы вы могли произвольно установить поле адреса источника в исходящей дейтаграмме, не было бы простого способа получить какой-либо ответ - потому что на вашем компьютере ничего не отвечает на выбранный вами адрес (на этом адресе нет IP-интерфейса).

Если вы хотите смоделировать наличие разных IP-адресов в программе, вам необходимо смоделировать IP. Это потребует использования сырых сокетов, но, похоже, для этого не существует реализации Java.

...