gpt4 book ai didi

java - InetAddress.getByName 返回错误的 IP 地址

转载 作者:行者123 更新时间:2023-11-30 03:41:19 47 4
gpt4 key购买 nike

我一直在服务器上使用以下代码。

public SocketServer(int port,String inetAddress) throws IOException {
this.port = port;
this.ia = InetAddress.getByName(inetAddress);
log.info(String.format("Internet Address %s using port %d for provided IP Address %s", this.ia.toString() ,this.port ,inetAddress.toString()));
s = new ServerSocket(port,50,this.ia );
}

这在我的本地服务器上工作正常,但在生产中它提供了错误的地址。生产服务器确实包含以下类型的 IP:-

  • 私有(private)IP
  • VPN IP
  • 公共(public)IP

我提供私有(private) IP 并期望服务器使用该私有(private) IP 进行连接,但它却使用 VPN IP 进行连接。

我想做的另一件事是使用 InetAddress.getByAddress() 但我无法将字符串中的 IP 转换为字节数组。谁能建议我在这方面有任何解决方案吗?

最佳答案

如果我没记错的话,这可能是与 DNS 相关的问题。 InetAddress.getByName(String host) 将返回分配给某个域名的第一个 IP 地址。

即如果您的/etc/hosts 文件中有类似的内容

192.168.1.1  sandbox1
192.168.1.2 sandbox1

代码

InetAddress.getByName("sandbox1")

永远会给你192.168.1.1

希望这有帮助!

关于java - InetAddress.getByName 返回错误的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26778477/

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