3

iPod Touch/iPhone/iPad がサーバー側コンポーネント (MIDI を生成し、ホスト内で送信する) と通信するリアルタイム アプリの作成を検討しています。Wifi で iPod Touch に ping を実行すると、非常に大きな遅延が発生します (そして、非常に大きな変動も):

64 bytes from 192.168.1.3: icmp_seq=9 ttl=64 time=38.616 ms
64 bytes from 192.168.1.3: icmp_seq=10 ttl=64 time=61.795 ms
64 bytes from 192.168.1.3: icmp_seq=11 ttl=64 time=85.162 ms
64 bytes from 192.168.1.3: icmp_seq=12 ttl=64 time=109.956 ms
64 bytes from 192.168.1.3: icmp_seq=13 ttl=64 time=31.452 ms
64 bytes from 192.168.1.3: icmp_seq=14 ttl=64 time=55.187 ms
64 bytes from 192.168.1.3: icmp_seq=15 ttl=64 time=78.531 ms
64 bytes from 192.168.1.3: icmp_seq=16 ttl=64 time=102.342 ms
64 bytes from 192.168.1.3: icmp_seq=17 ttl=64 time=25.249 ms

これが iPhone->Host または Host->iPhone 時間の 2 倍であっても、15ms+ は私が検討しているアプリには長すぎます。これを回避するより速い方法はありますか (USB ケーブルなど)? そうでない場合、Android でアプリをビルドすることで他のオプションが提供されるでしょうか?

Traceroute は、より実行可能な時間を報告します。

traceroute to 192.168.1.3 (192.168.1.3), 64 hops max, 52 byte packets
 1  192.168.1.3 (192.168.1.3)  4.662 ms  3.182 ms  3.034 ms

誰かが私にとってpingとtracerouteのこの違いを解読できますか?また、ホストと(およびホストから)通信する必要があるアプリケーションにとって、それらは何を意味するのでしょうか?

4

3 に答える 3

4

これは、WiFiの省電力モードがあなたを殺している可能性があると思います. 電話はパケットをバッファリングし、たまにしか送信しないと思います。私が遊んでいた N900 で WiFi 経由で同様の動作を見ました。

投稿した ping の強いパターンに注目してください。これは、ping とアンテナの定期的なオン/オフ切り替えによって生成されたビート パターンである可能性があります。

于 2010-06-06T06:00:04.400 に答える
4

ping の「ラウンド トリップ」には、ホスト 1 -> AP -> ホスト 2 -> AP -> ホスト 1 の時間が含まれますが、traceroute の「ラウンド トリップ」には、ホスト 1 -> AP -> ホスト 1 の時間が含まれることに注意してください。これらの ping RTT 時間は、実際にはかなり良好です。私の家では、平均で 250 ミリ秒近く、私の 3GS では 300 ミリ秒を超えることがよくあります。

Ping の応答時間は、カーネルの可用性の影響を受けます。ICMP 要求が入ったときに CPU がビジーである場合、CPU が処理できるようになるまでバッファリングされます。iPhone のようなリソースに制約のあるデバイス (または、過負荷のルーター) では、このブロッキングが発生する可能性がたくさんあります。さらに、iPhone OS は、バーストで送信するために、ある程度パケットをキューに入れようとします。これにより、無線が連続して送信されるのを防ぎ、電力を節約します。もちろん、これはレイテンシーに影響を与え、低レイテンシーまたは安定したレイテンシーを必要とするアプリケーション (VoIP など) に問題を引き起こします。

現在、USB を介した TCP/IP 自体の公的な標準はありません (1394 が存在するのとは対照的に)。USB はシリアル リンク層であるため、理論的には、独自のプロトコルまたは定義済みのプロトコル (PPP など) を使用してドック コネクタ経由でデータを渡すことができます。EASession が確立されると、通常の NSInputStream/NSOutputStream を介して通信が行われます。

于 2010-04-20T23:43:25.067 に答える
1

私は Verizon と AT&T で多くのセルラー関連の仕事をしています。モバイル デバイスを指すときの ping 時間は、最初の接続試行が通常よりも長くなることを理解して取得する必要があります。

ping RTT に表示されるベースラインが、AT&T の平均で約 300 ミリ秒になる場合があります。Verizon の 400 ミリ秒から 600 ミリ秒ではさらに高くなります。

ただし、各キャリアの最初のパケットは、最初にモバイル デバイスを検出する必要があります。そのため、最初に得られる反応は本当に (本当に) 高いものになる可能性があります。3000 ミリ秒から最大 4500 ミリ秒は、監視システムから定期的に接続する 2700 のモバイル エンドポイントを持つ私が管理するネットワークで見たものです。

さらに、RF ノイズが多い環境では、遅延が発生し、パケットがドロップされます。あなたの家でさえ、無線で動作するデバイスに干渉する多くのノイズを生成する可能性があります。

これはおそらく役に立ちませんが... より優れたバッファリング機能を持つ API を使用できる場合は、より良いかもしれません... または、使用を考えている現在の API のバッファリング機能を詳しく調べてください。

うまくいくことを願っています=)

于 2010-04-21T07:42:50.643 に答える