android IPV6 訪問慢問題解決

之前ios必須得使用ipv6,於是服務器提供ip6訪問地址,但是android訪問,在4G情況下響應基本上在1s以上,巨慢無比,當時急着上線,也沒有顧得上去解決,服務器端直接給了一個ip4的訪問地址解決了。
經過不斷測試,發現每次解析都會收到兩個ip地址,ipv6和ipv4,ipv6總是在最前面,會被優先使用,那麼我們可以把ipv4放在第一位,讓ipv4被使用。

public class EngDNS implements Dns {
    @Override
    public List<InetAddress> lookup(String hostname) throws UnknownHostException {
        if(TextUtils.isEmpty(hostname)){
            throw new UnknownHostException("hostname == null");
        }else{
            try{
                List<InetAddress> 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){
                UnknownHostException unknownHostException = new UnknownHostException("Broken system behavior");
                unknownHostException.initCause(ex);
                throw unknownHostException;
            }
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章