откройте ServerSockets и привяжите их к различным IP-адресам Linux - PullRequest
0 голосов
/ 21 июня 2019

Я хочу открыть разные 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-адрес. Но как я могу это сделать, чтобы привязать несколько адресов к локальному хосту.

...