Я пытаюсь разработать систему, в которой есть разные узлы, которые запускаются в разных системах или на разных портах в одной и той же системе.
Теперь все узлы создают Socket с целевым IP как IP специального node, известного как загрузочный node. Затем узлы создают свой собственный ServerSocket
и начинают прослушивать соединения.
Загрузочный node поддерживает список узлов и возвращает их при запросе.
Теперь мне нужен node, чтобы зарегистрировать свой IP-адрес для начальной загрузки node. Я попытался использовать cli.getInetAddress()
, как только клиент подключится к ServerSocket
начальной загрузки node, но это не сработало.
- Мне нужен клиент для регистрации его PPP IP, если он доступен;
- В противном случае IP-адрес локальной сети, если он доступен;
- В противном случае он должен зарегистрировать 127.0.0.1 при условии, что тот же компьютер.
Используя код:
System.out.println(Inet4Address.getLocalHost().getHostAddress());
или
System.out.println(InetAddress.getLocalHost().getHostAddress());
Мой IP-адрес подключения PPP: 117.204.44.192, но приведенное выше возвращает мне 192.168.1.2
ИЗМЕНИТЬ
Я использую следующий код:
Enumeration e = NetworkInterface.getNetworkInterfaces();
while(e.hasMoreElements())
{
NetworkInterface n = (NetworkInterface) e.nextElement();
Enumeration ee = n.getInetAddresses();
while (ee.hasMoreElements())
{
InetAddress i = (InetAddress) ee.nextElement();
System.out.println(i.getHostAddress());
}
}
Я могу получить все IP-адреса, связанные со всеми NetworkInterface
s, но как их отличить? Это результат, который я получаю:
127.0.0.1
192.168.1.2
192.168.56.1
117.204.44.19