質問

PCにインストールするアプリケーションを開発しており、サーバーとの間でバックグラウンドのアップロードとダウンロードを実行します。要件の1つは、インターネット接続が現在ビジーであるかどうか(たとえば、使用率が50%を超えているかどうか)を検出することです。ビジー状態の場合は、バックオフしてもう一度試す必要があります。主な理由は、ユーザーがゲームをしているとき、オンライン映画を見ているとき、またはファイルを積極的にダウンロードしているときに、アプリがユーザーエクスペリエンスを妨げないようにすることです。

グーグルともちろんSOについて多くの考えと調査を行った後、私はまだこれを実装するための良い方法を見つけられなかったので、これをここに捨てることにしました。 アプリケーションはC#、. NET 4.0で実装されており、C#または他の言語での実装、疑似ロジック、または達成方法に関するアプローチのいずれかで、インターネットトラフィック使用率の測定に関するあらゆる形式の応答を探しています。十分な精度のローカルPC。

作業の重複を避けるために、これまで私はこれらを試しました(そしてなぜそれらが適切でないのか)

  • WMIを使用してネットワーク統計を取得します。これをアプローチと呼んで以来、ほとんどのSOの投稿とソリューションは、使用率のためにネットワークインターフェイス容量(1GBイーサネットカードなど)に対して送受信されたバイト数を測定するとLANトラフィックの適切な測定値が得られるため、要件を満たしていません。ただし、インターネットトラフィック(実際のインターネット帯域幅は8Mbpsとしか言えない場合があります)ではありません
  • .NETネットワーク情報統計またはパフォーマンスカウンターの使用-上記と同様の読み取り値が得られるため、同じ欠点があります
  • ICMP(Ping)を使用して、RTTを測定します。 400ms RTTは、ビジーネットワークの低速で適切な兆候と見なされることが示唆されましたが、モデムを使用しているユーザー(はい、サポートする必要があります)、リバースプロキシまたはマイクロ波リンクの使用は、それを超えることが多いため、適切ではないと言われました。測定
  • 既知のファイルのダウンロードを開始し、速度を測定します-これ自体が回避しようとしているトラフィックを生成します。また、このチェックが十分に頻繁に行われると、アプリケーションが大量のインターネットトラフィックを作成することになります-これも理想的ではありません
  • MOD:BITSの使用-このサービスはユーザーPCで無効にでき、グループポリシーを変更する必要があり、サーバーはIIS(カスタム構成)であると想定します。この場合、サーバーはIISではありません

    これで、私は混乱し、アドバイスを探しています。質問のテキストを強調表示して、これを読んで質問が何であるかを迷わないようにしました。ありがとう。

役に立ちましたか?

解決

UPnPを使用してルーターにクエリを実行し、ネットワークを介して送受信されたバイト数を取得できます。ルーターでこの値をチェックし続けて、アクティビティが何であるかを判断できます。残念ながら、この機能は十分に文書化されていないようですが、C#アプリケーション内にUPnP通信機能を実装することは可能です。UDPを使用してルーターを照会する必要があり(UPnP検出)、デバイスが見つかったら、その機能を照会し、WebClient(TCP)を使用してインターネットゲートウェイデバイスとの間で送受信されたパケット数を照会します。 ジェネラコディセタグプレ ジェネラコディセタグプレ

他のヒント

の使用を検討しましたかバックグラウンドインテリジェント転送サービス(BITS)。すでにこの仕事をするように設計されています:

バックグラウンドインテリジェント転送サービス(BITS)は、クライアントとサーバー間でファイル(ダウンロードまたはアップロード)を転送し、転送に関連する進行状況情報を提供します。ピアからファイルをダウンロードすることもできます。

そして

他のネットワークアプリケーションの応答性を維持します。

管理されたインターフェイスがあるかどうかはわかりません(Powershellコマンドレットへの参照が表示されます)。そのため、COM相互運用機能を使用して使用する必要がある場合があります。

(C#で開発していると言ったように)Windows PCをターゲットにしていると仮定して、 BITS 、バックグラウンドインテリジェント転送サービス?

MSDNや他の場所でC#を使用してフックする方法の例があります。 http://msdn.microsoft.com/en-us/magazine/cc188766.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top