0

次のコード行を使用して、自分の PC であるサーバーに ping を実行しようとします。

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)てみてください。大丈夫です。

IP に対して ping を実行するサーブレットを作成したと思います。もしそうなら、例えば。HTTP 応答を介してレイテンシーを返す場合は、たとえばを使用する必要があります。その応答をプログラムで取得するためのHttpClientパッケージ。それを達成する上で、SOにはいくつかのスレッドがあります。

乾杯、

于 2012-12-14T11:14:22.493 に答える
1

serverResourceLocatorURL に似ていますInetAddress.getByNameが、ホスト名が必要です。

試す

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