2

我有一个 Java 桌面应用程序(部署在 Windows 上),它需要了解一堆不同的主机名/IP。我更喜欢在软件中使用主机名,因为它比输入 IP 地址更具描述性/不那么脆弱。但是,这意味着 Windows 机器需要了解此映射。

他们正在与之交谈的桌面应用程序和服务器软件都部署在专用网络中。网络上没有我可以利用的现有 DNS 服务。

桌面正在与之通信的服务器软件已经有一个包含所有这些信息的主机文件。过去,我在桌面安装程序中包含了这个主机文件,基本上破坏了 Windows 机器的主机文件。这很丑陋,我不想再这样做了。我希望我基本上可以在我的桌面应用程序中部署我的主机文件,并在使用主机文件信息填充的应用程序内运行某种名称服务。这样我就不会影响其他应用程序,也不会弄乱桌面的主机文件。

我发现这篇文章描述了实现你自己的NameService类。这是我一直在寻找的解决方案,但是,它使用内部 Sun 类(我可以在这里逃脱,但我宁愿不必这样做)。此外,这篇文章很旧(2006 年)。在Java 7 API中,不再列出文章提到的网络属性。有没有更好/更现代的方法来做到这一点?

4

2 回答 2

1

尝试使用JDNSS 之类的项目。

但是,如果您在网络上搜索,您可以找到许多关于此主题的链接。

于 2012-04-12T18:03:29.033 回答
0

我不明白替换 NameServer 类等的复杂性。如果您只需要几个主机名-IP 映射,请拥有一个包含主机名和 IP 的数组,并在该数组中查找您的名称。或者有一个像主机一样格式化的文件,将文件放在您的应用程序文件夹中,然后从该文件中填充上述数组。

好的解决方案是拥有一个本地 DNS 服务器,例如 DNSMASQ 或 BIND。

于 2012-04-14T17:48:32.937 回答