![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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すべてで共通に動かしたい
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
最近,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();
で戻ってきた内容を見ています.
よろしくお願いします
No.1
- 回答日時:
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で応答のなかった場合です。
この回答への補足
ありがとうございます。
お返事が遅れてごめんなさい。
えっと…。Request timed out.は
Windowsシステムすべてで共通といいきっていのでしょうか?
結果によって次の処理に自動的にふりわけたいのですが、
Request timed uot
をキーワードにすると、
ping 255.255.255.255とかのときには適応できないですよね…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ネットワーク コマンドプロンプトで、コマンドの飛ばし方を教えてください。 ネットワークにデータを飛ばす(copy) 4 2022/10/19 11:21
- その他(メールソフト・メールサービス) ドメイン間違えでエラー送信メールが来ない 1 2022/05/10 18:44
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- その他(パソコン・周辺機器) チャレンジタッチ3 改造 アプリインストールできない 1 2022/07/01 14:43
- その他(IT・Webサービス) EXCELVBAでシートを他のブックにコピーする命令を出すと毎回存在しないシート名の問合わせがある 1 2022/05/07 15:12
- UNIX・Linux bash のファイルの読み込み方についてご質問 3 2023/05/15 20:40
- UNIX・Linux linuxサーバーのキャッシュをクリアするコマンドを実行したい。 5 2023/01/24 14:52
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- Excel(エクセル) EXCELVBAでシートを他のブックにコピーする命令を出すと毎回存在しないシート名の問合わせがある 2 2022/05/07 17:16
- 確定申告 確定申告しなかった場合の期末商品棚卸高の扱い 2 2022/06/11 21:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSでタイトルバーを非表示...
-
cmd /c を使ったときと使わなか...
-
ShellExecuteの使い方について
-
Tomcatのメモリー使用量が知りたい
-
SYSTEM関数等を用いて複数のコ...
-
32bitアプリから64bitアプリの...
-
javaアプリケーションからコマ...
-
windowsのタスクスケジューラを...
-
VBプログラムから「管理者とし...
-
staticのメモリ共有について
-
jarファイルをバッチで実行させ...
-
Eclipseで、プロジェクト名のと...
-
html上で、バッチやexeファイル...
-
Eclipse「リフレッシュ」と「ク...
-
split関数で区切り文字がない場合
-
Eclipseのアンインストールの仕方
-
classファイルについて
-
Javascriptの値をJava(JSP)へ渡...
-
eclipseでスタックサイズを変更...
-
【Eclipse】パッケージ・エクス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでタイトルバーを非表示...
-
VBプログラムから「管理者とし...
-
CloudSticky.jarが起動しない。
-
jarファイルをバッチで実行させ...
-
batよりjava起動
-
ShellExecuteの使い方について
-
32bitアプリから64bitアプリの...
-
Java VM のヒープサイズについて
-
C#からバッチファイルを起動で
-
ブレークポイントを設置してな...
-
ACCESS VBA からエクセルを最小化
-
windows power shell icacl
-
Javaプログラムでコマンド実行...
-
SYSTEM関数等を用いて複数のコ...
-
MacOS:ターミナルではNPMのコ...
-
JAVA バッチファイルの作成・...
-
コマンドを実行してコマンドラ...
-
javaからバッチファイル実行
-
windowsのタスクスケジューラを...
-
Java 特定プロセス名前取得方法...
おすすめ情報