重複の可能性:
Iphone は 3G または Wi-Fi を検出します
現在のネットワーク速度を取得する方法はありますか、またはデバイスが EDGE/3G/GPRS 上にあるかどうかは? Reachability を使用して WiFI と WMAN を区別することはできますが、それだけでは私のアプリケーションには十分ではありません。
重複の可能性:
Iphone は 3G または Wi-Fi を検出します
現在のネットワーク速度を取得する方法はありますか、またはデバイスが EDGE/3G/GPRS 上にあるかどうかは? Reachability を使用して WiFI と WMAN を区別することはできますが、それだけでは私のアプリケーションには十分ではありません。
本当に知る必要がある場合は、テストする必要があります。
低レイテンシーの既知のサーバーへの接続をセットアップします。別のスレッドで、時間 (時間 A) をマークし、パケットを送信します (1 つのパケットであることを確認してください)。そのスレッドを待ってください。最初のパケットの時間をマークします (時間 B)。完了するまでデータを読み取ります。最後のパケットの時刻 (時刻 C) をマークします。サーバーの応答が少なくとも 3 つのパケットにまたがっていることを確認してください。
時間 B - 時間 A は、待ち時間の非常に大まかな見積もりです。時間 C - 時間 B は、帯域幅の非常に大まかな見積もりです。
可能な限り正確にしたいので、利用可能な最低レベルのネットワーク アクセスを使用してください (iPhone ではこれはソケットだと思います)。リクエストとレスポンスの両方に、固定長のランダム データ ブロックを使用します。リクエストには数バイトで十分ですが、レスポンスは適切に構築する必要があります。サーバーが小さな最初のパケットを送信することを確認してから、3 つ以上を満たすのに十分な大きさの一連のパケットを送信します。
その時点で、テストする必要があります。テスト、テスト、テスト、そしてテスト。さまざまな種類のネットワークでテストし、さまざまな量のネットワーク トラフィックでテストし、スイッチング ネットワークでテストし、その他考えられるすべてのことをテストします。