我一直在服务器上使用以下代码。
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并期望服务器使用该私有IP进行连接,而是使用VPN IP进行连接。
我要做的另一件事是使用InetAddress.getByAddress()但我无法将字符串中的IP转换为字节数组。 任何人都可以建议我在这方面有任何解决方案吗?
答案 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
希望这有帮助!