2

これが私の最後の質問です。今、私の新しい要件は、いくつかのサーバーのセットに ping を実行し、それらが応答しているかどうかを確認することです。私は自分のやり方を試しています

system("ping xxx.xx.xx.xx >out.txt");

次に、out.txt の文字列「Request timed out.」を解析します。これは私に良い結果をもたらしています。しかし、Cプログラムから行うより良い方法はありますか? 非プログラム的な方法も歓迎します。しかし、ほとんどの場合、C プログラムで行きたいと思っています。リクエストがタイムアウトした場合は、同じようにphpでメールを送信します。前もって感謝します。

私の環境:Windows、Tiny C Compiler

4

2 に答える 2

3

別のオプションは、ICMP パケットを自分で送受信するために raw ソケットを使用するか、そのためにlibnetなどのライブラリを使用することです。その後、より細かい粒度で測定を行うことができます。ただし、慣れるまでには時間がかかります。:)

于 2009-08-12T04:37:58.917 に答える
3

代わりsystem()に使用するよりも、出力をキャプチャするための優れた方法です。popen()そうすれば、一時ファイルを使用せずにコマンドの出力をキャプチャできます。

ping のより良い方法は、Microsoft ICMP API を使用することです (紹介ページはここにあります)。これは、C コンパイラに任意の Win32 API 関数を呼び出す機能がある場合に可能になります。特に、IcmpSendEchoは必要な関数です。

于 2009-08-12T04:24:21.473 に答える