首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java InetAddress失败

Java InetAddress失败
EN

Stack Overflow用户
提问于 2013-11-04 14:00:13
回答 5查看 6.8K关注 0票数 2

我正在尝试使用"isReachable“方法检查是否可以找到某个主机。

代码语言:javascript
复制
line 113: oaiBaseURL = "http://www.cnn.com";//////////////////////////////////////
line 114: boolean res = InetAddress.getByName(oaiBaseURL).isReachable(10000);
line 115: System.out.println("------reachable:"+res);

并获得以下错误消息(在eclipse中):

代码语言:javascript
复制
java.net.UnknownHostException: http://www.cnn.com
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)
    at java.net.InetAddress.getAddressFromNameService(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getByName(Unknown Source)
    at com.irWizard.web.validator.WizardValidator.validateForm(WizardValidator.java:114)

有谁知道这个错误的原因吗?

提前感谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-11-04 14:08:54

您需要删除http://前缀。

据我所知,InetAddress.getByName()方法使用的是主机名,而不是URL。

您可以按以下方式更改代码:

代码语言:javascript
复制
   URL url = new URL("http://www.cnn.com");
   boolean res = InetAddress.getByName(url.getHost()).isReachable(10000);
   System.out.println("------reachable:"+res);

但是,请记住isReachable()方法用于确定它是否可访问的机制。它主要使用ICMP技术,许多网站或中间防火墙可能会阻止这些技术。

票数 7
EN

Stack Overflow用户

发布于 2013-11-04 14:14:36

来自文档的报价

主机名可以是计算机名(如"java.sun.com“),也可以是其IP地址的文本表示。如果提供了文字IP地址,则只检查地址格式的有效性。

你不需要指定方案。只要删除"http://“”,它就能工作了。

票数 0
EN

Stack Overflow用户

发布于 2013-11-04 14:17:36

你按它应该的方式解析了这个网址吗?您只需要从URL获取主机名

代码语言:javascript
复制
URL oaiBaseURL = new URL("http://www.cnn.com");
boolean res = InetAddress.getByName(oaiBaseURL.getHost()).isReachable(10000);
System.out.println("------reachable:"+res); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19769326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档