如何在Java中通过完整计算机名称ping一台机器

3

在提问之前,我在这里搜索了一下。

InetAddress.getByName("SOMECONSTANTCOMPUTERNAME.xxx.CORP.xxx.COM").isReachable(10000)

这段代码总是返回false或UnknownHostException,但是通过使用cmd并写入以下命令

ping SOMECONSTANTCOMPUTERNAME.xxx.CORP.xxx.COM

我正在获取ping状态。

最后,如果我没有做好充分的研究,请谅解。

敬礼, icr


在我发布之前,我已经阅读过这些内容,实际上它们都有正确的主机名和IP地址。但在我的情况下,IP地址是会变化的。 - icr
1个回答

3

您可能正在尝试获取IPv6地址的IP地址,并且为全局IPv6地址指定了scope_id。由于API仅在此处提到的两种情况下抛出UnknownHostException:

getByName

public static InetAddress getByName(String host) throws UnknownHostException 确定给定主机名的IP地址。 主机名可以是计算机名称,例如“java.sun.com”,也可以是其IP地址的文本表示形式。 如果提供了字面IP地址,则仅检查地址格式的有效性。

对于在文字IPv6地址中指定的主机,接受RFC 2732中定义的格式或RFC 2373中定义的文字IPv6地址格式。 还支持IPv6作用域地址。 有关IPv6作用域地址的说明,请参见此处。

如果主机为null,则返回表示环回接口地址的InetAddress。 请参见RFC 3330第2节和RFC 2373第2.5.3节。

参数:host-指定的主机或null。

返回:指定主机名的IP地址。

抛出:UnknownHostException-如果找不到主机的IP地址,或者为全局IPv6地址指定了scope_id。

在此处了解有关IPv6作用域地址的更多信息:

http://docs.oracle.com/javase/6/docs/api/java/net/Inet6Address.html#scoped


1
谢谢你提供的链接,我尝试使用它,但是isReachable()仍然存在同样的问题。不过,我只是使用了syso来获取getIPAddress(),它返回了目标机器的当前地址。 - icr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接