我正在进行典型的HttpUrlConnection下载以将数据提取到我的应用中,但我发现某些网络存在问题。
这些网络正在为设备分配ipv6地址,即使网络无法正常使用ipv6。当然,Android会从ipv6故障转移到ipv4。
在Jellybean(4.2.2)中,故障转移需要接近一分钟,这对于移动应用来说太长了。我们没有直接控制这些网络。
如果我可以强制HttpUrlConnection只使用ipv4一切都会好的,但我发现没办法这样做。还有其他人吗?
答案 0 :(得分:1)
请不要强制该应用程序使用IPv4。我们正在部署具有仅IPv6连接(使用NAT64 / DNS64)的网络,并且仅限IPv4的应用程序将在此类网络上中断。世界上没有未使用的IPv4地址,世界上的一些地方(亚洲,欧洲,中东)已经出局。
要解决此问题,请查看RFC 6555: Happy Eyeballs。它描述了一种算法,该算法将首先尝试IPv6,但会迅速回退到IPv4,用户几乎不会注意到它(或者通常根本不会注意到它)。
不幸的是,我不知道您可以在Android上使用的良好Java实现,但我希望其他人能够指出您正确的方向。 (或者你可以成为第一个编写开源实现并以这种方式获得财富和成名的人(至少成名;)