Я пытаюсь разработать систему, в которой разные узлы работают в разных системах или на разных портах одной и той же системы.
Теперь все узлы создают Socket с целевым IP-адресом в качестве IP-адреса специального узла, известного как узел начальной загрузки. Затем узлы создают свой собственный ServerSocket
и начинают прослушивать соединения.
Узел начальной загрузки поддерживает список узлов и возвращает их при запросе.
Теперь мне нужно, чтобы узел зарегистрировал свой IP в узле начальной загрузки. Я попытался использовать cli.getInetAddress ()
после того, как клиент подключился к ServerSocket
узла начальной загрузки, но это не сработало.
Использование кода:
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
Он получает IP-адрес вашей сети, если ваш компьютер является частью сети
try {
System.out.println(InetAddress.getLocalHost().getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}