2014-01-13 34 views

回答

-2

這個怎麼樣?

import java.io.IOException; 
import java.net.Socket; 
import java.net.UnknownHostException; 

/** 
* 
*/ 
public class SocketTimeoutTest { 

public static void main(String[] args) { 
    long startMillis = System.currentTimeMillis(); 

    try { 
     Socket socket = new Socket("www.test123.com", 80); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    long endMillis = System.currentTimeMillis(); 

    System.out.println("Timout: " + (endMillis - startMillis)); 

    } 

} 
1

JNDI Docs提供以下信息:

的DNS提供商使用以下指數退避算法提交UDP查詢。提供程序向DNS服務器提交查詢,並等待響應在超時期限內(默認爲1秒)到達。如果在超時期限內沒有收到任何迴應,它將查詢下一臺服務器,依此類推。如果提供程序未收到任何服務器的響應,則會延長超時時間,並重復向每個服務器提交查詢的過程,最多重試次數(默認爲4次)。

因此,它取決於配置中包含的DNS服務器的數量,但默認初始值爲1秒,如果所有服務器都失敗,則每個服務器的值爲31秒; 1 + 2 + 4 + 8 + 16 = 31.(初始嘗試+4次重試)