8

手元に面白い状況があり、トラブルシューティングの方法がよくわかりません。私は自分の状況に似たものを数回検索しましたが、それに完全に一致するものはありません。答えがすでにここのどこかにあるなら、私を正しい方向に向けることができる人をいただければ幸いです。

わかりました、要点まで。

インターネット接続を監視するためのウォッチドッグアプリケーションを作成しています。設定された間隔で一連のドメインにpingを実行するように設計されており、いずれかのドメインがpingに応答すると、ステータスタイマーがリセットされます。ステータスタイマーが設定されたしきい値を超えた場合、問題を修正するためにいくつかの段階の修正措置が試みられます。

簡単ですね。

ここがおかしくなるところです。

ICMPsendechoを使用してping要求を発行しています。私の開発環境(win7)では、正常に動作し、テストが行​​われ、すべてがスムーズに進んだようです。ただし、デプロイされている環境では、応答を受信できません。展開環境は、WindowsXPsp3マシンです。

トラブルシューティングプロセス全体を通して、この問題を実際に解決しようとする際に役立つ場合と役に立たない場合があるいくつかのことに気づきました。

Windows ping.exeは、接続ステータスのテストに使用しているすべてのドメインの展開環境で正常に機能します。応答の生成に失敗したように見えるICMPsendecho呼び出しのみです。

デプロイメント環境にwiresharkをインストールしましたが、両方のタイプのpingで要求に対してパケットが正常に発行されていることがわかります。Windows pingは74バイトの長さの要求パケットを生成し、私のプログラム呼び出しは42バイトの長さのパケットを生成します。Windows応答パケットは、受信時に同様に74バイトです。

Wiresharkをインストールした状態で、開発環境に1分間切り替えます。Windows pingは、パケットを使用する展開環境と同様の状況を生成します。ただし、私のアプリケーションでは、要求を生成するとき、パケットの長さは42バイト(デプロイメント環境と同じ)ですが、受信する応答の長さは60バイトです。

私が言ったように、その情報は役立つかもしれないし、役に立たないかもしれませんが、Windows pingがそのマシンで正常に機能しているように見えるのに、なぜこのアプリケーションがICMP応答を生成できないのかを調べようとしています。

役立つかもしれないもう一つのちょっとした情報、インターネット接続はAT&Tのelevate 4gホットスポットを使用して監視していました、実際のデバイスはシエラワイヤレスMC8790AirPrimeカードです。

これらのpingが失敗する理由について誰かが何か考えを持っていますか?

あなたが持っているかもしれない有用な情報と私の投稿を読むために時間を割いてくれてありがとう。

PS。

4

3 に答える 3

3

答えは、送信するpingのサイズにある可能性があります(ペイロードには、文書化されていない最小サイズの20バイトがあるようです)。詳細については、この投稿を参照してください: http: //groups.google.com/group/microsoft.public.win32.programmer.networks/browse_thread/thread/2b28b994a8067713?pli= 1

于 2012-02-29T18:41:25.427 に答える
2

ユーザー権限を確認しましたか?Ping.exeには管理者権限は必要ありませんが、Windowsの生のICMPコマンドには管理者権限が必要です。

この例を参照してください:http ://www.delphi-central.com/tutorials/icmp-ping.aspx

ただし、WindowsNTおよびWindows2000の実装の場合、Raw Socketsはセキュリティチェックの対象であり、管理者グループのメンバーのみがアクセスできることに注意してください。


もう1つの考えられる理由は、ICMPパケットをブロックするファイアウォールである可能性があります。

于 2012-02-21T08:16:42.750 に答える
0

クライアントでも同じエラーが発生しました。解決策は、IcmpSendEchoが失敗したときに、プランBとしてIcmpSendEcho2を実装することでした。機能した!

于 2013-05-10T17:39:09.177 に答える