使用Inetadress.getbyName的UnknownHostException

时间:2016-06-30 11:19:17

标签: java

我正在尝试使用以下命令获取服务器ipaddress的主机名,

InetAddress serverdetails=InetAddress.getbyName(<ip-address>)
String serverhostname=serverdetails.gethostname();

但我得到 unknownhostexception。

注意:我可以使用命令提示符ping服务器地址。

代码

private class PingTarget extends TimerTask {

    @Override
    public void run() {
        try {
            boolean reachable = InetAddress.getByName(
                    ConnectionPropHolder.TargetMachine).isReachable(5);
            if (reachable) {
                UploadtoServer();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

根据getByName(String)的javadoc,如果

,则抛出此异常
  

找不到主机的IP地址,或者为全局IPv6地址指定了scope_id。

如果字符串是无法解析为IP地址的主机名,或者是字符串形式的格式错误的IPv4或IPv6地址,则“无法找到主机”适用。

异常消息将告诉您上述哪些原因适用,并且它可能会告诉您尝试解析或查找的字符串。 (如果它没有告诉你后者,那么在异常处理程序中捕获并打印出ConnectionPropHolder.TargetMachine的值是微不足道的。)