У меня возникли проблемы Нахождение локальной виртуальной машины с частной сетью только для хоста, попытка получить ее следующим образом:
private static void printUvms(String domainName, String pattern)
{
InetAddress[] addresses = null;
try
{
addresses = InetAddress.getAllByName(domainName);
}
catch (UnknownHostException e)
{
System.out.println("Unknown Host: " + domainName);
return;
}
for (InetAddress address : addresses)
{
System.out.println("Host Name: " + address.getHostName());
System.out.println("Host Address: " + address.getHostAddress());
if (address.getHostAddress().startsWith(pattern))
{
System.out.println("UVM found!");
}
}
}
Здесь domainName будет именем виртуальной машины(«UVM») и шаблон будет «192.168».поскольку это сеть только для хоста.
По какой-то причине, хотя виртуальная машина имеет правильное имя и указана с адресом 192.168. [i]. [j], когда я запускаю "arp -a" вконсоль Windows, иногда она не находит эту виртуальную машину, но иногда это делает.Если этого не происходит, он вместо этого находит другую виртуальную машину с тем же именем, которая где-то подключена к сети, и, если это так, находит только локальную.Никогда не оба, однако, что я нахожу запутанным, учитывая, что я пытаюсь "getAllByName".
Поэтому я попробовал другой подход, который выглядит следующим образом:
private static String getUvm(String domainName, String pattern)
{
String host = null;
for (int i = 0; i < 256; i++)
{
System.out.println(String.format("Checking %s%d...", pattern, i));
for (int j = 0; j < 256; j++)
{
host = String.format("%s%d.%d", pattern, i, j);
InetAddress address = null;
try
{
address = InetAddress.getByName(host);
if (address.getHostName().equals(domainName))
{
System.out.println("Host Name: " + address.getHostName());
System.out.println("Host Address: " + address.getHostAddress());
System.out.println("UVM found!");
return host;
}
}
catch (UnknownHostException e)
{
System.out.println("Unknown Host: " + domainName);
return null;
}
}
}
return null;
}
Очевидно, что это очень времяметод потребления, а не то, что я могу использовать в конце.Если бы кто-то мог сказать мне, как сделать это лучше и эффективнее, я был бы очень признателен.:)