Ответ 1
Похоже, у вас есть два IP-адреса.
На компьютере с одним сетевым адаптером выбранный IP-адрес - это первичный IP-адрес сетевого адаптера на компьютере. Однако на компьютере с несколькими компьютерами стек должен сначала сделать выбор. Стек не может сделать интеллектуальный выбор, пока он не узнает целевой IP-адрес для соединения.
Когда программа отправляет вызов connect() на целевой IP-адрес или отправляет вызов send() в дейтаграмму UDP, стек ссылается на целевой IP-адрес, а затем проверяет таблицу маршрутов IP, чтобы он мог выбрать лучший сетевой адаптер для отправки пакета. После выбора этого сетевого адаптера стек считывает первичный IP-адрес, связанный с этим сетевым адаптером, и использует этот IP-адрес в качестве исходного IP-адреса для исходящих пакетов.
Если вы хотите активировать второй IP-адрес и его, например, LAN, отключите его от сети и после 10-секундного подключения. Другой IP-адрес может быть выбран в качестве IP-адреса хоста в таблице маршрутизации.
Вы можете получить второй IP-адрес от getNetworkInterfaces
.
Попробуйте выполнить следующий код:
public static void main(String[] args) throws Exception
{
System.out.println("Your Host addr: " + InetAddress.getLocalHost().getHostAddress()); // often returns "127.0.0.1"
Enumeration<NetworkInterface> n = NetworkInterface.getNetworkInterfaces();
for (; n.hasMoreElements();)
{
NetworkInterface e = n.nextElement();
Enumeration<InetAddress> a = e.getInetAddresses();
for (; a.hasMoreElements();)
{
InetAddress addr = a.nextElement();
System.out.println(" " + addr.getHostAddress());
}
}
}