首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何验证字节数组作为ipv6地址?

如何验证字节数组作为ipv6地址?
EN

Stack Overflow用户
提问于 2020-03-06 03:36:05
回答 1查看 141关注 0票数 2

背景:在验证字符串是否为有效的ipv6地址时,由于缩写的存在,需要考虑很多情况。

代码语言:javascript
复制
::
::1
2622:ca00:139:594::64:90f3
2622:ca00:0139:0594:0000:0000:0064:90f3

都是将ipv6地址表示为字符串的有效方法。如果我需要一个函数来验证一个字符串是否为有效的ipv6地址,我需要考虑所有这些情况。

问题:我需要帮助编写一个java/scala函数,该函数接受一个字节数组并验证它是否为ipv6地址。我似乎找不到的是,当一个ipv6地址被写成一个字节数组时,它总是16个字节长吗?或者有没有类似于用字符串表示法来缩写地址的方法?如果ipv6的字节表示始终是16字节,并且从不缩写,我相信我可以用下面的逻辑测试有效的ipv6 -是这样吗?

代码语言:javascript
复制
  /**
   * Return true if byte array is a valid ipv6 address.
   *
   * @param ip - array of bytes representing ip address
   * @return - true if ip address is a valid ipv6 address
   */
  def isIpV6(ip: Array[Byte]): Boolean = {
    ip != null && ip.length == 16
  }
EN

回答 1

Stack Overflow用户

发布于 2020-03-06 04:13:06

如果你真的需要在没有库的帮助下进行解析,那么有很多复杂的解析方法。它不能放在一页上。

最舒适的方式是InetAddress.getByName(),它会在出现问题时抛出一个异常。

Guava有一种类似的方法,即for IPs only

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60552796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档