IP地址无法访问

时间:2015-06-03 05:46:54

标签: java ip ipv4 inetaddress

我想知道是否可以使用下面的代码访问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.");
    }
}
}

1 个答案:

答案 0 :(得分:1)

您可以从命令行ping机器吗?例如。 ping 78.46.84.171

根据oracle docs

  

测试该地址是否可达。最好的努力是由   实现尝试到达主机,但防火墙和服务器   配置可能会阻止导致无法访问状态的请求   虽然某些特定端口可以访问。典型的实现   如果可以获得特权,将使用ICMP ECHO REQUEST,   否则它将尝试在端口7(Echo)上建立TCP连接   目的地主机。

     

超时值(以毫秒为单位)表示最大值   尝试应该花时间。如果操作在获得之前超时   回答,主机被视为无法访问。将产生负值   在抛出IllegalArgumentException。

总结可能的错误:

  • 防火墙是否阻止了ICMP请求? (见上面的ping命令)
  • 也许你的100 ms超时是短暂的(尝试增加到,例如1000)
  • 您使用的是Linux / Mac吗?也许您没有权限进行ping操作,因此isReachable(int)实现尝试TCP-Connect但失败了。 (尝试使用Windows机器或以root身份或通过sudo执行程序)
相关问题