2012-09-09 90 views
1

我想讓我的程序顯示什麼ipconfig命令在Windows中顯示。我設法獲取主機名和IPv4地址,我如何獲得IPv6地址和子網掩碼?到目前爲止,我嘗試過各種各樣的事情。我的代碼是:當前連接信息 - Java

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.If任何人都可以加入一些標記,我不能想到的,我將不勝感激!)

+0

重複:http://stackoverflow.com/questions/6908398/inetaddress-gethostaddress-ipv6-compliant和http://stackoverflow.com/questions/1221517/how-to-get-subnet-mask-using- java – m4tx

+0

第二篇文章對我來說根本不起作用......:/第一篇文章是我認爲我忽略的東西,我很抱歉... –

+3

也許這一個會適合你:http://stackoverflow.com/questions/6557275/obtain-an-ipv4-subnetmask-with-java :) – m4tx

回答

1

如果你想的IPCONFIG給我們的所有信息,我不認爲你可以用java.net包來獲取它。如果你正在尋找的是IPv6和IPv4地址,那麼你可以使用java.net.Inet6Address.getHostAddress()

如果你想要其他信息,如DHCP,默認網關,DNS,那麼你最好的選擇是從java調用ipconfig並捕獲輸出。這種攻擊是操作系統特定的,所以你也可以在執行之前包含一些代碼來檢查操作系統。

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循環中,你可以放置一些代碼來尋找像「主機名」或「物理地址」,只顯示包含這些線路字符串。