Java - 如何检测IP版本

标签 java servlets network-programming

我通过以下方法获取 Client IP 地址:

public static String getClientIpAddr(HttpServletRequest request) {  
    String ip = request.getHeader("X-Forwarded-For");  
    ...
    return ip
} 

现在我想检测它是 IPV4 还是 IPV6

最佳答案

您可以创建一个 InetAddress 并检查它是否成为 ipv4 或 ipv6 实例

InetAddress address = InetAddress.getByName(ip);
if (address instanceof Inet6Address) {
    // It's ipv6
} else if (address instanceof Inet4Address) {
    // It's ipv4
}

虽然看起来有点尴尬,但我希望有更好的解决方案。

关于Java - 如何检测IP版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18102672/

相关文章:

perl - perl中的缓冲区操作

r - 如何将包含网络数据的 csv 文件转换为 GML

java - 执行的字符串值与硬编码值不匹配

java - Hashtable 中键迭代器排序的调试

java - jetty servlet : How can I forward GET request with parameters as POST request with JSON body?

spring - 如何修复 Kotlin 中的警告 : Assigning single elements to varargs in named form is deprecated

java - 我可以在 Apache Commons Config 中同时使用数组和非数组吗?

java - 单线程程序利用多核

java - 有没有办法从 servlet 过滤器的 Java 代码中查询 "url-pattern"属性?

java - 如何在java中使用jpcap识别接收到的数据包是使用TCP还是UDP?