当我尝试使用网络IPping自己的PC时,我获得java.net.UnknownHostException的原因可能是什



我尝试使用以下代码行ping我自己的PC服务器:

InetAddress.getByName(serverResourceLocator).isReachable(5000)
// where serverResourceLocator is  192.168.43.187/server/ping?ip=Adarsh-PC/192.168.43.187&time=1355482205301

这是我从命令192.168.43.187了解到的PC的网络IP ipconfig

Wireless LAN adapter Wireless Network Connection:
Connection-specific DNS Suffix  . :
Link-local IPv6 Address . . . . . : fe80::f5be:cfa7:5c38:efff%14
IPv4 Address. . . . . . . . . . . : 192.168.43.187
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.43.1

在我的电脑上,我正在运行tomcat作为服务器。为什么我会UnknownHostException


java.net.UnknownHostException: 192.168.43.187/server/ping?ip=Adarsh-PC/192.168.43.187&time=1355482205301
at java.net.InetAddress.getAllByName0(InetAddress.java:1140)
at java.net.InetAddress.getAllByName0(InetAddress.java:1109)
at java.net.InetAddress.getAllByName(InetAddress.java:1072)
at java.net.InetAddress.getByName(InetAddress.java:969)
at internet.CommunicationWithServer.PingTheServer.ping(PingTheServer.java:35)
at internet.CommunicationWithServer.PingTheServer.access$000(PingTheServer.java:11)
at internet.CommunicationWithServer.PingTheServer$1.run(PingTheServer.java:21)
at java.lang.Thread.run(Thread.java:619)

.getByName() 方法需要一个主机名,而不是您提供的(半)URL。引用JavaDoc的话:

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

(我的强调)。

只要尝试InetAddress.getByName( "192.168.43.187" ).isReachable(5000),你就会没事的。

我突然想到你已经编写了一个 servlet,可以 ping 一个 IP。如果例如。通过 HTTP 响应返回延迟,然后您应该使用 eg。以编程方式获取该响应的 HttpClient 包;SO 上有几个线程可以实现这一目标。

干杯

serverResourceLocator

像是一个URL,而InetAddress.getByName需要一个主机名:

尝试

InetAddress.getByName("192.168.43.187").isReachable(5000)

最新更新