Я пытаюсь разработать систему, в которой есть разные узлы, которые работают на разных системах или на разных портах в одной и той же системе.
Теперь все узлы создают Socket с целевым IP-адресом в качестве IP-адреса специального узла, известного как узел начальной загрузки. Затем узлы создают свои собственные ServerSocket
и начинают прослушивать соединения.
Узел начальной загрузки поддерживает список узлов и возвращает их при запросе.
Теперь мне нужно, чтобы узел зарегистрировал свой IP на узле начальной загрузки. Я попытался использовать cli.getInetAddress()
после подключения клиента к ServerSocket
узла начальной загрузки, но это не сработало.
- Мне нужно, чтобы клиент зарегистрировал свой 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
EDIT
Я использую следующий код:
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
с, но как их различить? Это вывод, который я получаю:
127.0.0.1
192.168.1.2
192.168.56.1
117.204.44.19