关于服务端设置了IPV6时,Android请求网络超慢的问题记录
16lz
2021-01-23
原因
- 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学习进阶路线导航线路(Android源码分享)
- android沉浸状态栏实现、地图多线路规划、Retrofit+RxJava+Jsoup
- 直播源码Android实现 曲线路径动画
- 在iis上运行的服务器端程序,运行一段时间后,访问都只出现一行乱码,
- 183条地铁线路,3034个地铁站,发现中国地铁名字的秘密。
- 来自Kenneth Reitz大神的建议:避免不必要的面向对象编程
- 阿里大神的刷题笔记.PDF
- 不会时间序列预测?不要紧,大神来教你
- 数据分析框架和任务拆解?看看大神怎么做!