- - PR -
javaでtracert
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-23 16:52
【JDK1.3.1.20】
javaで"windowsで言うtracert"をやる方法はないでしょうか。 (ホップ数を計りたいのです。) (windowsのプロセスを起動する方法は、なしで。) どなたがご存知の方いらっしゃいましたら お教えください。 よろしくお願いします。 | ||||
|
投稿日時: 2007-03-23 17:24
tracert は traceroute を省略したものです。 システムコールでも関数でも何でもない、C なり何なりで 書かれたアプリケーションですので、 それを java でやりたいなら移植するしかないのでは? そもそも traceroute が動いている仕組を理解されますか? http://www.atmarkit.co.jp/fnetwork/netcom/traceroute/traceroute.html RAWソケットでUDPパケットを生成すれば何とかなると思いますが、 IPに関する知識も必要になると思いますよ。 | ||||
|
投稿日時: 2007-03-23 21:54
J2SE1.5 より古いものでは、ICMP を扱えないため無理です。
ホップ数だけであれば、J2SE1.5で追加されたInetAddress#isReachable(NetworkInterface,int,int)を使用すれば可能かもしれません。 余談ですが、 Sun の現在の実装(*)では、Windows上では常にICMP ECHO REQUESTを使用しません。ICMP&RAW socketが不安定とかコメントがあって、該当部分が #if 0 でカットされています。コメントには "We may revisit and enable this code in the future." と書かれているんですが…… (*)他社の実装や、Sun の将来の実装では ICMP ECHO REQUEST を使うかもしれません。その辺は実際に Wireshark 等でチェックするなりしないとわかりません。 | ||||
|
投稿日時: 2007-03-24 10:02
お二方ともありがとうございます。
お犬様のおっしゃるとおりですね。 非常に参考になりました。 |
1