Java中有一个API(NetworkInterface,InetAddress等),我可以通过它检测到网卡没有连接。
问题是,解决某些网络API有一个很大的超时。但如果网卡没有连接任何电缆,我们可以跳过它。问题似乎只发生在Windows 7上。
答案 0 :(得分:2)
我有同样的问题。我最终使用了这个:
Enumeration<NetworkInterface> eni = NetworkInterface.getNetworkInterfaces();
while(eni.hasMoreElements()) {
Enumeration<InetAddress> eia = eni.nextElement().getInetAddresses();
while(eia.hasMoreElements()) {
InetAddress ia = eia.nextElement();
if (!ia.isAnyLocalAddress() && !ia.isLoopbackAddress() && !ia.isSiteLocalAddress()) {
if (!ia.getHostName().equals(ia.getHostAddress()))
return true;
}
}
}
适用于Java 5+。还间接检查DNS(通过比较名称/地址)。
答案 1 :(得分:1)
您可以使用一些java系统属性来设置使用
进行套接字连接的默认超时时间sun.net.client.defaultConnectTimeout
但在我看来,检查特定的介质访问控制器是否存在是底层操作系统的工作。我不能告诉你很多关于Windows 7的问题,我从12年后开始使用一个好的操作系统(linux)。
此致 斯特凡