Java – IPv4形式のIPアドレスを取得する方法
JavaでIPv4形式のIPアドレスを取得するには、InetAddressクラス
を使用します。
InetAddress.getLocalHost()メソッド
でローカルホストのIPアドレスを取得し、getHostAddress()メソッド
で文字列形式のIPアドレスを取得できます。
ただし、IPv6アドレスが返される場合もあるため、IPv4アドレスのみを取得したい場合は、NetworkInterfaceクラス
を使用してネットワークインターフェースを列挙し、各インターフェースのアドレスをフィルタリングする必要があります。
JavaでIPアドレスを取得する基本的な方法
Javaでは、InetAddressクラス
を使用してIPアドレスを取得することができます。
このクラスは、ホスト名やIPアドレスに関連する情報を提供します。
以下に、基本的な使用方法を示します。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class App {
public static void main(String[] args) {
try {
// ホスト名からIPアドレスを取得
InetAddress inetAddress = InetAddress.getByName("localhost");
// IPアドレスを表示
System.out.println("IPアドレス: " + inetAddress.getHostAddress());
} catch (UnknownHostException e) {
// ホストが見つからない場合のエラーメッセージ
System.out.println("ホストが見つかりません: " + e.getMessage());
}
}
}
IPアドレス: 127.0.0.1
このコードでは、InetAddress.getByName("localhost")
を使用してローカルホストのIPアドレスを取得しています。
取得したIPアドレスは、getHostAddress()メソッド
を使って表示されます。
エラーが発生した場合は、UnknownHostException
をキャッチしてエラーメッセージを表示します。
IPv4アドレスのみを取得する方法
Javaで取得できるIPアドレスには、IPv4とIPv6の両方がありますが、特定の条件下でIPv4アドレスのみを取得することができます。
以下の方法では、すべてのネットワークインターフェースを調べ、IPv4アドレスをフィルタリングして取得します。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class App {
public static void main(String[] args) {
try {
// ネットワークインターフェースの列挙
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
// 有効なインターフェースのみを対象
if (networkInterface.isUp()) {
// インターフェースに関連するIPアドレスの列挙
Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
// IPv4アドレスのみを表示
if (inetAddress.getAddress().length == 4) {
System.out.println("IPv4アドレス: " + inetAddress.getHostAddress());
}
}
}
}
} catch (SocketException e) {
// ソケットエラーが発生した場合のエラーメッセージ
System.out.println("ソケットエラー: " + e.getMessage());
}
}
}
IPv4アドレス: 192.168.1.2
IPv4アドレス: 127.0.0.1
このコードでは、NetworkInterface.getNetworkInterfaces()
を使用して、すべてのネットワークインターフェースを取得しています。
各インターフェースが有効であるかを確認し、関連するIPアドレスを取得します。
IPv4アドレスは、inetAddress.getAddress().length
が4であることを確認することでフィルタリングされ、表示されます。
実践例:ローカルホストのIPv4アドレスを取得する
ローカルホストのIPv4アドレスを取得するのは、ネットワークプログラミングやデバッグの際に非常に便利です。
以下のサンプルコードでは、InetAddressクラス
を使用してローカルホストのIPv4アドレスを取得し、表示します。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class App {
public static void main(String[] args) {
try {
// ローカルホストのIPアドレスを取得
InetAddress inetAddress = InetAddress.getLocalHost();
// IPv4アドレスを表示
if (inetAddress.getAddress().length == 4) {
System.out.println("ローカルホストのIPv4アドレス: " + inetAddress.getHostAddress());
} else {
System.out.println("ローカルホストはIPv4アドレスを持っていません。");
}
} catch (UnknownHostException e) {
// ホストが見つからない場合のエラーメッセージ
System.out.println("ホストが見つかりません: " + e.getMessage());
}
}
}
ローカルホストのIPv4アドレス: 192.168.1.1
このコードでは、InetAddress.getLocalHost()
を使用してローカルホストの情報を取得しています。
取得したIPアドレスがIPv4であるかを確認し、表示します。
もしIPv4アドレスが存在しない場合は、その旨のメッセージを表示します。
この方法は、ローカル環境でのネットワーク設定を確認する際に役立ちます。
応用:特定のネットワークインターフェースのIPv4アドレスを取得する
特定のネットワークインターフェースのIPv4アドレスを取得することで、複数のネットワーク接続がある環境でのプログラムの動作を制御できます。
以下のサンプルコードでは、指定したネットワークインターフェースのIPv4アドレスを取得する方法を示します。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class App {
public static void main(String[] args) {
String interfaceName = "eth0"; // 取得したいネットワークインターフェース名を指定
try {
// 指定したネットワークインターフェースを取得
NetworkInterface networkInterface = NetworkInterface.getByName(interfaceName);
if (networkInterface != null && networkInterface.isUp()) {
// インターフェースに関連するIPアドレスの列挙
Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
// IPv4アドレスのみを表示
if (inetAddress.getAddress().length == 4) {
System.out.println(interfaceName + "のIPv4アドレス: " + inetAddress.getHostAddress());
}
}
} else {
System.out.println("指定したネットワークインターフェースは存在しないか、無効です。");
}
} catch (SocketException e) {
// ソケットエラーが発生した場合のエラーメッセージ
System.out.println("ソケットエラー: " + e.getMessage());
}
}
}
eth0のIPv4アドレス: 192.168.1.10
このコードでは、NetworkInterface.getByName(interfaceName)
を使用して、指定したネットワークインターフェースの情報を取得しています。
インターフェースが有効であるかを確認し、関連するIPアドレスを取得します。
IPv4アドレスは、inetAddress.getAddress().length
が4であることを確認することでフィルタリングされ、表示されます。
指定するインターフェース名は、実際の環境に合わせて変更してください。
まとめ
この記事では、Javaを使用してIPアドレスを取得する方法について詳しく解説しました。
特に、IPv4アドレスを取得するための基本的な方法から、特定のネットワークインターフェースに焦点を当てた応用例までを紹介しました。
これを機に、実際のプログラムにおいてネットワーク関連の機能を活用してみてください。