InetAddress.getByName返回错误的IP地址

时间:2014-11-06 11:34:00

标签: java serversocket

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

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: -

  • 私人IP
  • VPN IP
  • 公共知识产权

我正在提供私有IP并期望服务器使用该私有IP进行连接,而是使用VPN IP进行连接。

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

1 个答案:

答案 0 :(得分:2)

如果我没有弄错,这可能是与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

希望这有帮助!