运行以下代码,我得到了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。
在使用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)
答案 0 :(得分:0)
我有类似的问题是由java.net.NetworkInterface.getDefault()
返回的ipv6地址引起的。我在Macbook上并使用无线 - p2p0(用于AirDrop)作为默认值返回,但在运行ether
时,我只有一个ipv6 ipconfig
条目(无inet
)
两种解决方案,两者都适用于我(我更喜欢第一种)
-Djava.net.preferIPv4Stack=true
启动JVM。这导致java.net.NetworkInterface.getDefault()
返回我的vboxnet0网络接口 - 如果您没有运行仅限主机的VM,则不确定会得到什么。