java - 如何在Java中标准化IPv6地址?

标签 java ip ipv6

给定一个包含其中一种格式的 IPv6 地址的字符串,是否有一种 Java 标准方法可以对同一地址的不同格式使用相同的标准化值来标准化它?

normalise("2001:db8:0:0:1:0:0:1") = x
normalise("2001:db8::1:0:0:1") = x
normalise("2001:db8:0:0:1::1") = x

最佳答案

您可以轻松实现这一目标 通过使用 InetAddress.getByName(String) 解析字符串 然后用 getHostAddress() 转换回字符串:

public static String normalize(String s) throws UnknownHostException {
    return InetAddress.getByName(s).getHostAddress();
}

对于所有 3 个示例,此方法都会返回 "2001:db8:0:0:1:0:0:1"

顺便说一句:上面的代码可以标准化 IPv6 IPv4 地址。

关于java - 如何在Java中标准化IPv6地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52135144/

相关文章:

java - 只是有点困惑,因为我不知道 java 中 Hex int 的 'bottom' 位是什么意思

java - java web应用程序中的文件上传显示文件未找到异常

PHP inet_pton 返回空字符串... var_dump 另有说明

c - 需要适用于 iOS 9 的 IPv6 多播 C 代码

java - 在 Java 中获取相同的 CST 和 EST 时间

ip - 当 TTL 变为 0 时谁丢弃 IP 数据包

networking - OpenStack:手动分配 IP

amazon-web-services - 如何控制AWS Elasticsearch Service和Kibana的访问权限?

c - IPv6 服务器中的绑定(bind)错误

java - 使用 Jackson 序列化 JSON 文档