2011-12-28 15 views
6

IdTCPServerまたはIdTCPClientを使用して現在の帯域幅を取得する方法は?現在の帯域幅(ダウンロード)速度を取得するにはどうすればよいですか?

クライアントがサーバーからデータをどのくらい高速にダウンロードしているか知りたいですか?

例えば:ダウンロード速度:450 kbpsの

+3

質問のタイトルにタグ情報を入れないでください。最初にタグを持つという目的を破り、トピックのトピックを長くして読みにくくします。また、バージョン間に大きな違いがあるIndyのようなものを使用している場合は、使用しているコンポーネントのバージョンを含めると役立ちます。ありがとう。 –

答えて

9

は、OnWorkBeginにハンドラを割り当てOnWork、および接続のTIdTCPConnectionオブジェクトのOnWorkEndイベント。 OnWorkBeginイベントにはAWorkCountMaxパラメータがあり、転送される予定の合計バイト数がわかります(あらかじめわかっている場合)。 OnWorkイベントには、OnWorkBeginイベントが発生してから実際に転送されたバイト数の合計が表示されるAWorkCountパラメータがあります。

OnWorkイベントが発生するたびに、二つの事象間で転送されたバイト数を決定するために現在AWorkCount値から前AWorkCount値を減算し、2つの間に経過した時間の量によってその値を割りイベント。この最終的な値で、必要に応じてb/sec、kb/sec、mb/secなどを計算できます。

あなたがデータを受信/送信する方法を正確に応じて、手動で発射開始するOnWork...イベントを取得するためにTIdTCPConnectionBeginWork()EndWork()メソッドを呼び出す必要があります。 Indyの読み取り/書き込みメソッドのほとんどは内部でBegin/EndWork()を呼び出しません。

関連する問題