关于服务端设置了IPV6时,Android请求网络超慢的问题记录
16lz
2021-12-04
原因
- Android会优先选择ipv6 的进行dns的处理,具体为啥会慢,还在探索中…,也请大神们指教一下,多谢?
解决方式
- 重置Android的线路选择,优先选择ipv4(基于okhttp)
- 代码
OkHttpClient.Builder builder = new OkHttpClient().newBuilder() .readTimeout(60, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .connectTimeout(30, TimeUnit.SECONDS) .dns(new EngDNS())
class EngDNS implements Dns { @Override public List lookup(String hostname) throws UnknownHostException { if (TextUtils.isEmpty(hostname)) { return Dns.SYSTEM.lookup(hostname); } else { try { List inetAddressList = new ArrayList<>(); InetAddress[] inetAddresses = InetAddress.getAllByName(hostname); for (InetAddress inetAddress : inetAddresses) { if (inetAddress instanceof Inet4Address) { inetAddressList.add(0, inetAddress); } else { inetAddressList.add(inetAddress); } } return inetAddressList; } catch (NullPointerException ex) { return Dns.SYSTEM.lookup(hostname); } } } }
更多相关文章
- Android(安卓)+ Eclipse + NDK + cygwin配制
- Android(安卓)如何在屏幕切换的时候页面信息不被重置
- 用VS2010开发Android应用的配置方法
- Android(安卓)列表选择框 Spinner详解及实例
- HelloWorld-----Google手机操作系统Android应用开发入门
- RadioButton 选择框的位置
- android背景选择器selector用法、自定义Button按钮样式
- android SDK 2.3安装
- android环境搭建及改变默认avd路径