gpt4 book ai didi

基于多个 DNS 结果的 Java 传出 TCP 连接故障转移

转载 作者:可可西里 更新时间:2023-11-01 02:32:40 30 4
gpt4 key购买 nike

如果我使用 new Socket("unit.domain.com", 100) 建立连接并且 unit.domain.com DNS 记录在A记录..在连接失败的情况下,Java是否像浏览器一样自动连接到列表中的其他地址之一?还是必须手动实现?

最佳答案

不!通过 new Socket(String, int) 创建套接字会导致这样的解析

addr = InetAddress.getByName(hostname);

这是

的快捷方式
return InetAddress.getAllByName(host)[0];

地址解析在Socket c-tor中进行。

如果您必须重新连接(故障转移),请使用 InetAddress.getAllByName(host) 返回的结果,随机化(或使用循环法)并连接到必要的地址。

编辑:另外,如果您需要连接一些可能出现的故障,最好使用带有超时的 Socket 类的连接方法。 另外确保关闭甚至失败的套接字(尤其是 channel ),因为它们可能会在 *Nix 上泄漏 FD。

关于基于多个 DNS 结果的 Java 传出 TCP 连接故障转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4648803/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com