2015-08-21 106 views
1

我试图在我的izpack安装程序中获取IP地址。我已经使用$ {IP_ADDRESS}变量,但我得到本地“127.0.0.1”地址而不是计算机的公共IP。这是预期的功能吗?对我来说似乎毫无用处,但我一定错过了一些东西。我如何获得公共IP?izpack中的非本地IP地址

的IzPack:v5.0.3 的java:1.7.0_79 Ubuntu的:15.04

感谢。

回答

0

它看起来像$ {} IP_ADDRESS被视为(部分来自的IzPack安装源):

InetAddress localHost = InetAddress.getLocalHost(); 
IPAddress = localHost.getHostAddress(); 
hostname = localHost.getHostName(); 

那么,问题是,InetAddress.getLocalHost()在大多数情况下返回本地主机地址。

如果您需要确定您的公共IP地址,那并不像取得您的本地主机地址那么简单。您必须迭代您的network interfaces,获取他们的地址并确定您需要哪一个。如果您不需要在业务代码中执行该操作,而是在安装程序内部需要执行该操作,则这种情况非常普遍。

据我所知,可以制作自己的jar文件并在你的安装程序中使用它,也许你应该尝试做出自己的ligic,这决定了这个公共ip,并且从你的IzPack安装程序调用。

+0

谢谢斯坦尼斯拉夫,这正是我所担心的。我希望有一个方法可以轻松完成,但如果没有,我将在Java工作中提取IP。 – user3592287

+0

顺便说一下,在我目前的项目中,我们有相同的要求,但是我们得出结论,这样很难实现它。我们只是输入一个字段,并要求用户手动设置所需的IP或主机名。 – Stanislav