【发布时间】:2023-04-01 14:54:01
【问题描述】:
在我们的项目中,我们需要使用标准的 JAVA API 1.4。
我们一直在使用 InetAddress.getByNAme(String address) 来验证 Ipv6/v4 地址。现在我们面临一个问题,即如果 DNS 配置在我们的网络中无效,那么验证方法需要更多时间才能返回结果。
我已经在谷歌上搜索了许多替代方案以避免在验证期间查找 DNS,我们只有一个选项getByAddress()
- 谁能建议我如何将字符串中的 IpAddress 转换为
getByAddress()方法的输入参数所需的字节数组? - 您能否解释一下
getByAddress()是如何验证地址的?它会查找一些本地主机吗?
【问题讨论】:
-
我不能代表 Java 1.4(因为它已经停止支持 七年 并且文档不再可用),但是 Java 1.7 的文档关于
getByName(String)的说法是“如果提供了文字 IP 地址,则只检查地址格式的有效性。” -
很可能,你的答案在这里stackoverflow.com/questions/9129391/… 提示:你需要相当于BSD inet_aton() 和朋友。
-
你的问题毫无意义。如果您已经知道 IP 地址,则无需验证任何内容。如果您的 DNS 速度慢或无效,请修复它。这是唯一可以“验证”主机名的东西。“在验证期间避免 DNS 查找”是一个自相矛盾的术语。
-
@IanMcLaird 是的,Java 1.4 已经过时了,但我们的项目还没有更新到最新版本,所以我束手无策。谢谢你的建议。