【问题标题】:Validate Ipv6/ipv4 address using InetAddress使用 InetAddress 验证 Ipv6/ipv4 地址
【发布时间】:2023-04-01 14:54:01
【问题描述】:

在我们的项目中,我们需要使用标准的 JAVA API 1.4。

我们一直在使用 InetAddress.getByNAme(String address) 来验证 Ipv6/v4 地址。现在我们面临一个问题,即如果 DNS 配置在我们的网络中无效,那么验证方法需要更多时间才能返回结果。

我已经在谷歌上搜索了许多替代方案以避免在验证期间查找 DNS,我们只有一个选项getByAddress()

  1. 谁能建议我如何将字符串中的 IpAddress 转换为 getByAddress() 方法的输入参数所需的字节数组?
  2. 您能否解释一下getByAddress() 是如何验证地址的?它会查找一些本地主机吗?

【问题讨论】:

  • 我不能代表 Java 1.4(因为它已经停止支持 七年 并且文档不再可用),但是 Java 1.7 的文档关于getByName(String) 的说法是“如果提供了文字 IP 地址,则只检查地址格式的有效性。”
  • 很可能,你的答案在这里stackoverflow.com/questions/9129391/… 提示:你需要相当于BSD inet_aton() 和朋友。
  • 你的问题毫无意义。如果您已经知道 IP 地址,则无需验证任何内容。如果您的 DNS 速度慢或无效,请修复它。这是唯一可以“验证”主机名的东西。“在验证期间避免 DNS 查找”是一个自相矛盾的术语。
  • @IanMcLaird 是的,Java 1.4 已经过时了,但我们的项目还没有更新到最新版本,所以我束手无策。谢谢你的建议。

标签: java jdk1.4


【解决方案1】:

一种可能的方法是使用 Guava 的 InetAddresses.forString() 解析器:

https://code.google.com/p/guava-libraries/source/browse/guava/src/com/google/common/net/InetAddresses.java

【讨论】:

  • 谢谢保罗。你拯救了我的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
  • 2013-09-18
  • 1970-01-01
  • 2012-12-25
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多