0

我尝试使用以下代码行 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

在我的 PC 上,我正在运行 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)
4

2 回答 2

3

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

主机名可以是机器名,例如“java.sun.com”,也可以是其IP 地址的文本表示。如果提供了文字 IP 地址,则仅检查地址格式的有效性。

(我的重点)。

试试看InetAddress.getByName( "192.168.43.187" ).isReachable(5000),你会没事的。

我突然想到你编写了一个 servlet 来 ping 一个 IP。如果它例如。通过 HTTP 响应返回延迟,那么您应该使用例如。HttpClient包以编程方式获取该响应;SO上有几个线程来实现这一点。

干杯,

于 2012-12-14T11:14:22.493 回答
1

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

尝试

InetAddress.getByName("192.168.43.187").isReachable(5000)
于 2012-12-14T11:14:26.467 回答