• ベストアンサー

VBでPINGで問題・・・

こんにちわ。 ここの掲示板(http://oshiete1.goo.ne.jp/kotaeru.php3?q=96873)を参考にVBでPINGを実行するプログラムをやっています。 まず、上のURLの過去質問の回答2にありますソースをベースにしています。失敗したときのエラーメッセージを違うものにしてテストしました。 そうしますと・・・同LAN上にあるPCをターゲットにした場合は問題ないのですが、遠方のサーバなどをターゲットにしますと、ステータスが「0」以外、つまり失敗になります・・・。 DOSプロンプトではきちっと返ってきています。 0かそうでないか、だけの判断では識別できないのでしょうか? 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.3

pOptions.Ttl = 5 では外部まで届かないかも知れませんね。 DOSプロンプトから > ping 外部サーバ -i 5 を実行すると、 Reply from xxx.xxx.xxx.xxx: TTL expired in transit. となるのではないでしょうか。 試しにTTLを大きくしてみてください。 pOptions.Ttl = 255

その他の回答 (4)

  • momoturbo
  • ベストアンサー率55% (49/88)
回答No.5

名前解決ができていないのではないでしょうか? IPでPINGをしても同じですか?

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

成功の判定は96873の回答1の方法で行えばいいでしょう。

zenon55
質問者

補足

はい、成功の判定は問題ありません。 問題はPINGで返りがあるはずのものが返ってこない・・・ということでした。 質問の仕方がまずかったですよね・・・申し訳ありません。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

PINGに関する知識とソースの理解も間違っているんじゃないでしょうか。 近郊は成功するけど遠方のサーバーへのピングで0(=失敗)が戻ってくるんですよね? ということはタイムアウトの設定を長くとれば良いというだけで。 ソースみましたが PING_TIMEOUT = 200 の数字を大きくすれば解決するでしょう。

zenon55
質問者

補足

表現がまずかったですね・・・遠方=LAN上以外のサーバめがけて・・・という意味です。 PING_TIMEOUTを5000とか10000とか50000とかにしてみましたが、だめでした。 やはり、DOSプロンプトでは返ってきます。 何が原因なんだろう・・・。 もっと大きな数字にするのかな???? DOSプロンプトでは問題ないですが、このソース、、、LANから外に出たターゲットつまり192.168.xxx.xxx意外だとだめなような気がするんですが。。。 研究中なので意味不明な質問や意見をしてるかもしれないですがお許しを・・・。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

タイムアウトを長くする。あるいは何回か繰り返すとか

関連するQ&A