联通4g(3gnet模式)接口访问慢无线网或者3g网络正常
**1、问题描述:**联通卡4g模式(使用3gnet模式)部分接口访问慢,但是无线网、移动数据切换到3g或者设置3gwap模式下访问均正常
2、原因: 与DNS解析有关,为了 IOS 的 appstore 审核,服务端增加了 ipv6 支持,而 ipv6 的服务入口在美国 中国移动和中国电信的 4G 网络 DNS 解析都会解析到两个 IP 地址,而中国联通的 4G 网络只能解析到 ipv4 地址
解决方案: 1、Android调整IP解析顺序,将ipv4地址放到解析第一位(最佳方案) 2、只在苹果审核期间开启ipv6 支持
3、项目中使用OkHttpClient连接网络,设置自定义的dns过滤(更改一下DNS解析顺序,优先解析ipv4地址即可)
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import okhttp3.Dns;
public class MyDns implements Dns {
@Override
public List
if(hostname==null){
throw new UnknownHostException("hostname==null");
}else {
List
try {
InetAddress[] inetAddresses = InetAddress.getAllByName(hostname);
for (InetAddress inetAddress : inetAddresses) {
if (inetAddress instanceof Inet4Address) {
mInetAddressList.add(0, inetAddress);
} else {
mInetAddressList.add(inetAddress);
}
}
} catch (UnknownHostException e) {
UnknownHostException unknownHostException = new UnknownHostException();
unknownHostException.initCause(e);
throw unknownHostException;
}
return mInetAddressList;
}
}
}
参考:https://www.cnblogs.com/feshfans/p/10269629.html