Информация о текущем соединении - Java

Я пытаюсь, чтобы моя программа отображала ipconfig Команда отображается в окнах. Мне удалось получить имя хоста и адрес IPv4, как я могу получить адрес IPv6 и маску подсети? Я пробовал разные вещи безрезультатно до сих пор. Мой код:

try {
    InetAddress addr = InetAddress.getLocalHost();
    String ipAddr = addr.getHostAddress();
    String hostname = addr.getHostName();
    gsc.mainWindow.printf("Host name: ",hostname,"\n");
    gsc.mainWindow.printf("IP Address: ",ipAddr,"\n");
} catch (Exception e) {
    gsc.mainWindow.printf("Error: ",e,"\n");
}

Рассматривать gsc.mainWindowисходящий поток, где я печатаю любой вид объекта. Заранее спасибо!

(PS. Если кто-то может добавить некоторые теги, о которых я не могу думать, я буду благодарен!)

1 ответ

Решение

Если вам нужна вся информация, которую нам предоставляет ipconfig, я не думаю, что вы можете получить ее с помощью пакета java.net. Если вам нужны только адреса IPv6 и IPv4, вы можете использовать java.net.Inet6Address.getHostAddress()

Если вам нужна другая информация, такая как DHCP, шлюз по умолчанию, DNS, тогда вам лучше всего позвонить ipconfig из java и перехватить вывод. Этот хак зависит от ОС, поэтому вы также можете включить некоторый код для проверки ОС перед выполнением.

String os = System.getProperty("os.name");        
try {
    if(os.indexOf("Windows 7")>=0) {
       Process process = Runtime.getRuntime().exec("ipconfig /all");
       process.waitFor();
       InputStream commandOut= process.getInputStream();
       //Display the output of the ipconfig command
       BufferedReader in = new BufferedReader(new InputStreamReader(commandOut));
       String line;
       while((line = in.readLine()) !=null) 
          System.out.println(line);
    }
}
catch(IOException ioe) {    }
catch(java.lang.InterruptedException utoh) {   }        
}

Если вы хотите отобразить только некоторое подмножество этой информации, то внутри цикла while вы можете поместить некоторый код для поиска таких вещей, как "Имя хоста" или "Физический адрес", и отображать только строки, содержащие эти строки.

Другие вопросы по тегам