2

アプリにデータをフェッチするために典型的な HttpUrlConnection ダウンロードを行っていますが、特定のネットワークで問題を発見しています。

これらのネットワークは、ネットワークが ipv6 で適切に機能しない場合でも、デバイスに ipv6 アドレスを割り当てています。もちろん、Android は ipv6 から ipv4 にフェイルオーバーします。

Jellybean (4.2.2) では、フェイルオーバーに 1 分近くかかりますが、これはモバイル アプリには長すぎます。これらのネットワークを直接制御することはできません。

HttpUrlConnection で ipv4 のみを使用するように強制できれば、すべて問題ありませんが、これを行う方法が見つかりませんでした。他に誰かいますか?

4

1 に答える 1

0

Please don't force the application to use IPv4. We are deploying networks that have IPv6-only connectivity (with NAT64/DNS64) and IPv4-only applications will break on such networks. The world is running out of unused IPv4 addresses, and parts of the world (Asia, Europe, Middle East) are already out.

To solve this please look at RFC 6555: Happy Eyeballs. It describes an algorithm that will try IPv6 first but falls back to IPv4 so quickly that the user will hardly notice it (or usually won't notice it at all).

Unfortunately I don't know of a good Java implementation you could use on Android, but I hope others will be able to point you in the right direction. (or you can be the first to write an open source implementation and gain fortune and fame that way (well, fame at least ;))

于 2013-06-25T20:11:53.373 に答える