1

Java ですべての IP アドレスを取得する際に問題が発生しています。使用する IP を選択するために GUI を開くと、次のように呼び出します。

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 アドレスが 1 つしかない場合 (Hamachi のようなサービスを使用すると 2 つ取得できます)、null 例外が返されることに気付きました。アドレスが 1 つしかない場合、null 例外を返さずにクライアントのすべての 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 に答える