Я хочу открыть разные ServerSockets, которые прослушивают разные IP-адреса.
Я знаю, что в Java я могу сделать это следующим образом:
serverSocket = new ServerSocket(8888,0,InetAddress.getByName("fe80::250:56ff:fec0:8"));
Но это работает только тогда, когда я использую IP-адреса, которые я получаю с помощью ifconfig.В противном случае я получаю это исключение:
java.net.BindException: Cannot assign requested address (Bind failed)
at java.base/java.net.PlainSocketImpl.socketBind(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:436)
at java.base/java.net.ServerSocket.bind(ServerSocket.java:381)
at java.base/java.net.ServerSocket.<init>(ServerSocket.java:243)
Например, я хочу открыть сокеты: один слушает 192.168.0.11 / 8888, а другой - 192.168.0.12/8888.Я получаю адреса во время выполнения, но я буду работать с фиксированным диапазоном IP-адресов.Было бы хорошо, если бы он также работал с IPv6.
Мой вопрос заключается в том, как настроить сетевые интерфейсы таким образом, чтобы я мог открывать разные ServerSockets для определенного диапазона IP-адресов?
Редактировать
Для пояснения почему, я хочу это сделать.Я реализовал маршрутизатор, который пересылает пакеты на другие устройства без IP-адреса.Но они должны выглядеть так, как будто у них есть собственный IP-адрес. Но как я могу это сделать, чтобы привязать несколько адресов к локальному хосту.