1

我在获取 Java 中的每个 IP 地址时遇到问题。当我打开 GUI 选择您要使用的 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 地址而不返回空异常?

4

1 回答 1

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

应该

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

或者

if (everyIPAddress != null && everyIPAddress.length > 0) {
于 2013-01-06T23:06:03.843 回答