メモの日々


2008年09月08日(月) [長年日記]

  • 何もやる気にならず週末ずっとゴロゴロしてしまった。これはいかんよ。掃除しないと。
  • 外出したとしても雷ゴロゴロで大変だったけどな。
  • ずっと忙しい。才能なーい。
  • ずっと健康だったが昨日から体調不良気味。最近暑かったり寒かったりするからなあ。

[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);
    }
}