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());
        }
    }
}

我正在使用带有 JDK 1.7.0_09-b05 的 OS X 10.8.2。

它在使用 THIS 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

我有一个类似的问题,这是由从java.net.NetworkInterface.getDefault(). 我在 Macbook 上并且正在使用无线 - p2p0(用于 AirDrop)作为默认值返回,但我ether在运行时只有一个 ipv6 条目ipconfig(否inet)。

两个解决方案,这两个都对我有用(我更喜欢第一个)

  1. 使用-Djava.net.preferIPv4Stack=true. 这导致java.net.NetworkInterface.getDefault()返回我的 vboxnet0 网络接口——如果你没有运行仅主机的虚拟机,不确定你会得到什么。
  2. 关闭无线并使用有线连接
于 2013-09-11T16:53:46.577 回答