2009-04-08 25 views
4

特定の時間に利用可能な帯域幅を見つける必要があります。コードは、Visual C++または.Netファミリで開発する必要があります。誰かがどのように知っていたら、私を助けてください。VC++でインターネット帯域幅をプログラムでチェックする方法は?

+0

このような問題の性質上、利用可能な正確な帯域幅を知らずにこれを解決する方法があるため、知りたい/知る必要がある理由を実際に説明する必要があります。 – DrHazzard

答えて

15

帯域幅を確認する唯一の方法は、実際にそれを使用することです。つまり、どこか別の場所からファイルをダウンロードし、スループットを測定することです。

他のネットワーク効果が結果に影響するためであっても、それだけで、近似値になるでしょう:チェック

  • レイテンシー
  • 非対称アップロード/
  • 他のトラフィックをダウンロード
+1

+キャッシングを防止します。 –

+2

彼自身のコードからファイルをダウンロードしている場合、キャッシュは問題にならないでしょう – Alnitak

+0

HTTPを使用してダウンロードすると、トランスペアレントプロキシによって捕捉される可能性があります。したがって、キャッシュヒットを防ぐために。 – Raynet

2

帯域幅はそれを使用しても厄介なものになります。たとえば、リモートマシンXからデータをダウンロードしようとするとN Kbsの数字が見積もられた場合、帯域幅の制限またはリモートマシンXの接続の制限があるかどうかをどのように知ることができますか?

複数のリモートマシンで同時ダウンロード(または測定する方向があればアップロード)を開始し、スループットが増加しなくなるまで負荷を増加させ続ける必要があります。

しかし、Alnitak氏によると、他の要因が結果に影響を与えている可能性はまだ分かりません。あなたのマシン上の他のプロセスが接続を使用していますか?またはあなたの無線LANにピギーバックしてあなたの帯域幅を盗んでいる隣人の子供ですか?多分それはあなたが見つけようとしているものです!

3

あなたは、現在のネットワーク使用率を意味する場合は、デバイス固有の情報を取得するために、上記のVistaとの

DeviceIoControl(hDevice,OID_GEN_STATISTICS, ... )

を呼び出すことができます。それ以外の場合は、システム全体の情報についてはGetIpStatisticsExに電話するか、WMIのWin32_PerfRawData_Tcpip_NetworkInterfaceを使用してください。

接続を飽和させることによって "利用可能な"帯域幅を取得しようとするのは、賢明で信頼性の高い方法ではありません。利用可能なオンライン速度テストのいくつかを試し、スケーラブルではない帯域幅を含み、輻輳制御、QoS、トラフィックシェーピングの影響を受けやすいと考えてください。

関連する問題