- ベストアンサー
VBでPINGで問題・・・
こんにちわ。 ここの掲示板(http://oshiete1.goo.ne.jp/kotaeru.php3?q=96873)を参考にVBでPINGを実行するプログラムをやっています。 まず、上のURLの過去質問の回答2にありますソースをベースにしています。失敗したときのエラーメッセージを違うものにしてテストしました。 そうしますと・・・同LAN上にあるPCをターゲットにした場合は問題ないのですが、遠方のサーバなどをターゲットにしますと、ステータスが「0」以外、つまり失敗になります・・・。 DOSプロンプトではきちっと返ってきています。 0かそうでないか、だけの判断では識別できないのでしょうか? 宜しくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
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)
名前解決ができていないのではないでしょうか? IPでPINGをしても同じですか?
- todo36
- ベストアンサー率58% (728/1234)
成功の判定は96873の回答1の方法で行えばいいでしょう。
- popesyu
- ベストアンサー率36% (1782/4883)
PINGに関する知識とソースの理解も間違っているんじゃないでしょうか。 近郊は成功するけど遠方のサーバーへのピングで0(=失敗)が戻ってくるんですよね? ということはタイムアウトの設定を長くとれば良いというだけで。 ソースみましたが PING_TIMEOUT = 200 の数字を大きくすれば解決するでしょう。
補足
表現がまずかったですね・・・遠方=LAN上以外のサーバめがけて・・・という意味です。 PING_TIMEOUTを5000とか10000とか50000とかにしてみましたが、だめでした。 やはり、DOSプロンプトでは返ってきます。 何が原因なんだろう・・・。 もっと大きな数字にするのかな???? DOSプロンプトでは問題ないですが、このソース、、、LANから外に出たターゲットつまり192.168.xxx.xxx意外だとだめなような気がするんですが。。。 研究中なので意味不明な質問や意見をしてるかもしれないですがお許しを・・・。
- todo36
- ベストアンサー率58% (728/1234)
タイムアウトを長くする。あるいは何回か繰り返すとか
補足
はい、成功の判定は問題ありません。 問題はPINGで返りがあるはずのものが返ってこない・・・ということでした。 質問の仕方がまずかったですよね・・・申し訳ありません。