3

私は現在、ftp 経由でさまざまなログを送信するシステム ロギング プログラムを作成しています。私が直面している問題は、別のプログラムが接続を使用したい場合にパケットの送信を停止するために、アップロードの前とアップロード中に接続が使用されているかどうかをプログラムが常にチェックする必要があることです。

実際、接続速度を測定するのに役立つこのリンクを見つけましたが、何かが既にストリーミングされているかどうかを確認するには、後者しか使用できないと思います. System.Net.NetworkInformation のライブラリ エントリを読んだ後、さまざまなネットワーク統計と状態を確認することも問題ではありませんでした。前に述べたように、私の唯一の問題は、他のプログラムが何かを送信したいかどうかを確認することです。

おそらく質問からわかるように、私はこのトピックに非常に慣れておらず、かなり経験の浅いプログラマーです。私は System.Net.NetworkInformation 名前空間ライブラリを読んで、さまざまなクラス、メソッド、およびデリゲートを促進しています。私は正しい道を進んでいると感じていますが、そこにたどり着いていません。誰かが正しい方向にプッシュしましたか?

ありがとうございました。

4

1 に答える 1

1

System.Net.NetworkInformation ライブラリとそのメソッドを使用することになりました。

メソッド GetIsNetworkAvailable()、NetworkChange.NetworkAvailabilityChanged Eventhandler、および TcpStatistics は、接続に関する情報を収集するのに役立ちました。MSDN とリファレンスは、前述の言及方法を使用するための優れたガイドであり、基本的には、ニーズに合わせてわずかに変更を加えた例を使用しました。

msdn ネットワーク情報: http://msdn.microsoft.com/de-de/library/system.net.networkinformation.aspx

GetIsNetworkAvailable は非常に簡単で、接続がアップまたはダウンしているときにブール値を返します。

Networkchange.NetworkAvailabilityChanged は、接続の切断または再接続時にイベントをトリガーします。その使用法に関する優れた非常に有用な例については、上記の msdn リンクを参照してください。

また、TcpStatistics は、受け入れられた接続、開始された接続、受信されたエラー、接続の失敗、接続のリセットなどに関する情報を返します。これらは、これまで接続を評価するために使用した 5 つです。

接続を効率的に監視するために、これ以上必要ないことに気付きました。おそらく、メソッド NetworkInterface.GetAllNetworkInterfaces() は、どの Networkadapter がデータを送信しており、監視する必要があるかを見つけるのに役立ちます。

私の質問に対するピーター・リッチーのコメントが理解できました。FTP 送信は非常にうまく機能し、プロトコルはファイルの送信を問題なく処理します。これまで、ログ ファイルのストリーミングで問題は発生していません。4 週間のテストで、ログ データを常に受信しています。

于 2012-08-20T11:02:35.163 に答える