OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

Javaでping

  • すぐに回答を!
  • 質問No.249470
  • 閲覧数1239
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 0% (0/2)

Javaプログラムで、ネットワーク上に同じIPアドレスが
存在していないかを確認したいとおもっています。

JavaではICMPレベルについてサポートしていないとのことで、
ネイティブのコマンドを利用しようと思い、以下のようにソースを書いてみました。

 try
 {
  // xxx.xxx.xxx.xxxはあるかどうか調べたいIPアドレス
  Process proc = Runtime.getRuntime().exec("ping xxx.xxx.xxx.xxx");
  proc.waitFor();
  int value = proc.exitValue();
  if(value == 0)
  {
   //正常
  }
  else
  {
   //異常終了
  }
 }
 cache(Exception e){}

IPアドレスが存在するときはproc.exitValue()の戻り値が0で、
存在しないときには0以外かと思ったのですが、
どうやらIPアドレスが存在はしていても、pingコマンドが正常に終了さえすれば
0が返ってきてしまうようです。

そこで戻りを一行ずつ読みこんで解析しようかとおもったのですが…、
どの文字が含まれていればネットワーク上に
IPアドレスxxx.xxx.xxx.xxxが含まれているかを判断できるのかがわかりません。

どのWindows上でも、IPアドレスの存在を確かめるには、どうしたらよいのでしょうか?

JavaというよりはWindows?の問題?かとおもったのですが、
Windows上でDOSから実行する分には、
人間が目視して確かめればいいだけだとおもうので、
プログラムが使用する場合にもつかえるpingコマンドを知りたいのです。
よろしくおねがいします。


使用JVM SDK1.3.1_02
使用OS Windows95,Windows98,Windows2000,WindowsMeすべてで共通に動かしたい
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 24% (612/2465)

PINGで応答がある場合。 C:\>ping 127.0.0.1 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0 ...続きを読む
PINGで応答がある場合。
C:\>ping 127.0.0.1

Pinging 127.0.0.1 with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>
応答がない場合。
C:\>ping 1.1.1.1

Pinging 1.1.1.1 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 1.1.1.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
となります。
Runtime.getRuntime().exec("ping xxx.xxx.xxx.xxx > /tmp/ping.log");
等と記述して、ファイルの内容を見てはいかがですか。
Request timed uot.がpingで応答のなかった場合です。
補足コメント
mojira

お礼率 0% (0/2)

ありがとうございます。
お返事が遅れてごめんなさい。

えっと…。Request timed out.は
Windowsシステムすべてで共通といいきっていのでしょうか?
結果によって次の処理に自動的にふりわけたいのですが、
Request timed uot
をキーワードにすると、
ping 255.255.255.255とかのときには適応できないですよね…
投稿日時 - 2002-04-10 08:16:58


  • 回答No.2
レベル3

ベストアンサー率 0% (0/0)

最近,javaからpingを投げることに頭を抱えてます. この質問ってもう完了してしまったのでしょうか. もし,情報ありましたらお願いいたします. ちなみに僕の場合は Process proc = Runtime.getRuntime().exec("ping xxx.xxx.xxx.xxx"); proc.waitFor(); ←ここで応答が来ません Proces ...続きを読む
最近,javaからpingを投げることに頭を抱えてます.
この質問ってもう完了してしまったのでしょうか.
もし,情報ありましたらお願いいたします.

ちなみに僕の場合は
Process proc = Runtime.getRuntime().exec("ping xxx.xxx.xxx.xxx");
proc.waitFor(); ←ここで応答が来ません

Process proc = Runtime.getRuntime().exec("ping xxx.xxx.xxx.xxx > ping.log");
の場合は「Bad Parameter」とのメッセージが戻ってきています.

BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
br.readLine();
で戻ってきた内容を見ています.

よろしくお願いします
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ