9

重複の可能性:
Iphone は 3G または Wi-Fi を検出します

現在のネットワーク速度を取得する方法はありますか、またはデバイスが EDGE/3G/GPRS 上にあるかどうかは? Reachability を使用して WiFI と WMAN を区別することはできますが、それだけでは私のアプリケーションには十分ではありません。

4

1 に答える 1

11

本当に知る必要がある場合は、テストする必要があります。

低レイテンシーの既知のサーバーへの接続をセットアップします。別のスレッドで、時間 (時間 A) をマークし、パケットを送信します (1 つのパケットであることを確認してください)。そのスレッドを待ってください。最初のパケットの時間をマークします (時間 B)。完了するまでデータを読み取ります。最後のパケットの時刻 (時刻 C) をマークします。サーバーの応答が少なくとも 3 つのパケットにまたがっていることを確認してください。

時間 B - 時間 A は、待ち時間の非常に大まかな見積もりです。時間 C - 時間 B は、帯域幅の非常に大まかな見積もりです。

可能な限り正確にしたいので、利用可能な最低レベルのネットワーク アクセスを使用してください (iPhone ではこれはソケットだと思います)。リクエストとレスポンスの両方に、固定長のランダム データ ブロックを使用します。リクエストには数バイトで十分ですが、レスポンスは適切に構築する必要があります。サーバーが小さな最初のパケットを送信することを確認してから、3 つ以上を満たすのに十分な大きさの一連のパケットを送信します。

その時点で、テストする必要があります。テスト、テスト、テスト、そしてテスト。さまざまな種類のネットワークでテストし、さまざまな量のネットワーク トラフィックでテストし、スイッチング ネットワークでテストし、その他考えられるすべてのことをテストします。

于 2012-05-23T11:56:23.140 に答える