主机查找的默认超时是多少?



与这个问题有关:寻找主机时如何设置套接字的超时?,我发现知道主机查找的默认超时很重要

如果超时很短,例如几分钟,我认为什么都不做是安全的。如果它很长,例如几个小时,我必须为它设置超时。

查找主机时套接字的默认超时是多少?

JNDI 文档提供以下信息:

DNS 提供程序使用以下指数退避算法提交 UDP 查询。提供程序向 DNS 服务器提交查询,并等待响应在超时期限(默认为 1 秒)内到达。如果在超时期限内未收到响应,则查询下一台服务器,依此类推。如果提供程序未收到来自任何服务器的响应,则会将超时期限加倍,并重复向每个服务器提交查询的过程,最多不超过最大重试次数(默认为 4

)。

因此,这取决于您的配置包括的DNS服务器的数量,但默认初始值为一秒,如果所有服务器都失败,则每台服务器为31秒; 1 + 2 + 4 + 8 + 16 = 31。(初始尝试 + 4 次重试)

这个呢?

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));
    }
}

相关内容

  • 没有找到相关文章

最新更新