2013-01-06 69 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) {