添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

[ java ][ net ] JavaでIPv4とIPv6の判別

文字列で与えられたIPアドレスがIPv4なのかIPv6なのかを判別したいとき、Javaではどう書けばいいのか。

InetAddress#getByName()の戻り値をinstanceofでチェックする方法しか思いつかなかった。次のテストは成功したのでメモ。

import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import static org.junit.Assert.*;
import org.junit.Test;
public class InetAddressTest {
    @Test
    public void v4test() throws Exception {
        InetAddress address = InetAddress.getByName("192.0.2.10");
        assertTrue(address instanceof Inet4Address);
    @Test
    public void v6test() throws Exception {
        InetAddress address = InetAddress.getByName("2001:DB8::10");
        assertTrue(address instanceof Inet6Address);
2000|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|09|10|11|
2015|01|02|03|04|06|07|08|09|10|11|12|
2016|02|03|04|05|06|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|10|11|12|
2018|02|03|04|05|06|07|08|09|11|
2019|01|02|03|04|05|06|07|08|09|12|
2020|01|02|04|05|06|07|08|12|
2021|01|03|04|05|06|07|08|10|11|12|
2022|01|03|04|06|07|09|10|11|12|
2023|01|02|04|06|08|09|10|11|12|
2024|01|04|05|06|07|08|