我想知道是否可以使用下面的代码访问IP地址。但每次我得到“无法到达”,即使机器正在运行。我尝试过使用几个活着的IP,但我总是得到“无法访问”。请帮忙。
public class CheckIP {
public static void main(String args[]) throws UnknownHostException, IOException{
String ip = "78.46.84.171";
if(InetAddress.getByName(ip).isReachable(100)){
System.out.println("Reachable.");
}
else{
System.out.println("Not Reachable.");
}
}
}
答案 0 :(得分:1)
您可以从命令行ping机器吗?例如。 ping 78.46.84.171
?
根据oracle docs:
测试该地址是否可达。最好的努力是由 实现尝试到达主机,但防火墙和服务器 配置可能会阻止导致无法访问状态的请求 虽然某些特定端口可以访问。典型的实现 如果可以获得特权,将使用ICMP ECHO REQUEST, 否则它将尝试在端口7(Echo)上建立TCP连接 目的地主机。
超时值(以毫秒为单位)表示最大值 尝试应该花时间。如果操作在获得之前超时 回答,主机被视为无法访问。将产生负值 在抛出IllegalArgumentException。
总结可能的错误:
100 ms
超时是短暂的(尝试增加到,例如1000)isReachable(int)
实现尝试TCP-Connect但失败了。 (尝试使用Windows机器或以root身份或通过sudo
执行程序)