2

次のコードを実行すると、次のようになりましたSocketException

import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Collections;
import java.util.Enumeration;

public class interfaces {
    public static void main(String[] args) throws SocketException {
        Enumeration<NetworkInterface> inters = NetworkInterface.getNetworkInterfaces();
        for (NetworkInterface iface : Collections.list(inters)) {
            System.out.println(iface.getDisplayName());
        }
    }
}

OS X 10.8.2 と JDK 1.7.0_09-b05 を使用しています。

これは、この JDK VERSION を使用する Windows で正常に動作し、JDK 1.6 を使用する OS X でも正常に動作します。これをテストしてJDKのバグかどうかを確認するのを手伝ってくれる人はいますか?

スタック トレースは次のとおりです。

Exception in thread "main"
java.net.SocketException: Can't assign requested address
    at java.net.NetworkInterface.getAll(Native Method)
    at java.net.NetworkInterface.getNetworkInterfaces(NetworkInterface.java:334)
4

1 に答える 1

0

から返された ipv6 アドレスによって引き起こされた同様の問題がありますjava.net.NetworkInterface.getDefault()。私はMacbookを使用しており、ワイヤレスを使用していました-p2p0(AirDropに使用)がデフォルトとして返されましたが、ether実行時にipv6エントリしかありipconfigません( no inet)。

2つの解決策、どちらも私のために働いた(私は最初のものを好む)

  1. で JV​​M を起動します-Djava.net.preferIPv4Stack=true。これによりjava.net.NetworkInterface.getDefault()、vboxnet0 ネットワーク インターフェイスが返されました。ホストオンリー VM を実行していない場合に何が得られるかはわかりません。
  2. ワイヤレスをオフにして有線接続を使用する
于 2013-09-11T16:53:46.577 に答える