2013-01-06 106 views
1

我在使用Java獲取每個IP地址時遇到問題。當我打開GUI來選擇要使用的IP,我稱之爲:以Java獲取客戶端的每個IP地址的問題

private List<String> getIP() { 
    List<String> outputList = new ArrayList<String>(); 
    try { 
     InetAddress localIP = InetAddress.getLocalHost(); 
     InetAddress[] everyIPAddress = InetAddress.getAllByName(localIP 
       .getCanonicalHostName()); 
     if (everyIPAddress != null && everyIPAddress.length > 1) { 
      for (int i = 0; i < everyIPAddress.length; i++) { 
       if (!everyIPAddress[i].toString().contains(":")) { 
        outputList.add(everyIPAddress[i].toString()); 
       } 
      } 
     } 
    } catch (UnknownHostException e) { 
     System.out.println("Error finding IP Address"); 
    } 
    return outputList; 
} 

這種方法獲取所有的IPv4地址的該客戶端。我知道IPv6地址包含冒號,因此我不會將冒號添加到列表中。

然後,按下按鈕將更改IP地址。但是,我注意到當機器只有一個IPv4地址時(你得到兩個像Hamachi這樣的服務),它將返回一個空的異常。如果只有一個地址,我將如何獲取客戶端的每個IP地址而不返回空異常?

+0

它不 '返回空例外'。 *你的代碼* **拋出一個'NullPointerException',在你沒有透露的一些代碼行中,並且它的外觀還沒有發佈。 – EJP

回答

4
if (everyIPAddress != null && everyIPAddress.length > 1) { 

應該

if (everyIPAddress != null && everyIPAddress.length >= 1) { 

if (everyIPAddress != null && everyIPAddress.length > 0) {