JavaでクライアントのIPアドレスを取得する方法
はじめに
Javaでは、標準ライブラリに含まれる InetAddress クラスを利用することで、クライアント(ローカルマシン)のIPアドレスを簡単に取得できます。この記事では、実際のサンプルコードとその解説、実行結果をわかりやすく紹介します。
サンプルコード
import java.net.*;
import java.io.*;
import java.util.*;
import java.net.InetAddress;
public class Demo{
public static void main(String args[]) throws Exception{
InetAddress my_localhost = InetAddress.getLocalHost();
System.out.println("The IP Address of client is : " + (my_localhost.getHostAddress()).trim());
String my_system_address = "";
try{
URL my_url = new URL("https://bot.whatismyipaddress.com");
BufferedReader my_br = new BufferedReader(new
InputStreamReader(my_url.openStream()));
my_system_address = my_br.readLine().trim();
}
catch (Exception e){
my_system_address = "Cannot Execute Properly";
}
}
}
実行結果
The IP Address of client is : 127.0.0.1
コードの解説
Demo という名前のクラスの中に main メソッドが定義されています。この main メソッド内では、まず InetAddress.getLocalHost() を呼び出してローカルホストの情報を取得し、続いて getHostAddress() メソッドを使ってクライアントのIPアドレスを取り出しています。取得した結果は、System.out.println() によってコンソールに出力されます。
さらに、このコードでは外部サービス「bot.whatismyipaddress.com」へアクセスし、グローバルIPアドレスを取得する処理も組み込まれています。URL クラスで対象のサイトを指定し、BufferedReader を使ってレスポンスを読み込むことで、インターネット上から見た自分のIPアドレスを取得できます。
なお、ネットワーク接続に失敗した場合などに備えて、try-catch ブロックによる例外処理が実装されています。何らかの理由でアクセスできなかった場合は、変数に「Cannot Execute Properly」という文字列が代入され、プログラムが異常終了しないようになっています。
まとめ
このように、Javaの InetAddress クラスを使えば、数行のコードでクライアントのIPアドレスを取得できます。ローカル環境でのテストではループバックアドレス(127.0.0.1)が返されますが、実際のネットワーク環境ではグローバルIPやローカルIPが取得される点にも注意しましょう。
-
正方形の面積を求めるJavaプログラムの書き方【初心者向け解説】
この記事では、Javaを使って正方形の面積を求める方法をわかりやすく解説します。正方形の面積は、次の公式で計算できます。辺 × 辺つまり s2正方形の面積の計算式正方形の1辺の長さを s とすると、その面積は s2(辺の2乗)で表されます。下図のように、縦と横が同じ長さの図形であるため、辺同士を掛け合わせるだけで面積が求まります。入力例1辺の長さ : 4出力例正方形の面積 : 16アルゴリズム処理の流れは以下の手順になります。Step 1 - 開始Step 2 - 整数型の変数 my_side(辺の長さ)と my_area(面積)を宣言するStep 3 - ユーザーから値を読み込む、または値を
-
【Java入門】長方形の周囲(外周)を求めるプログラムの作り方
長方形の周囲とは? この記事では、Javaを使って長方形の周囲(外周)を求める方法を解説します。長方形の周囲とは、長方形の4つの辺すべての長さを足し合わせた合計のことで、次の図のように「縦の辺2本」と「横の辺2本」の長さを合計したものに相当します。 長方形は向かい合う辺の長さが等しいという性質を持つため、周囲は次の式で計算できます。 周囲 = 2 ×(縦の長さ + 横の長さ) 入力と出力の例 たとえば、入力が次の値であるとします。 長方形の各辺の長さ:5, 8, 5, 8 このとき、期待される出力は次のとおりです。 Perimeter : 26 アルゴリズム 処理の流れは以下のようになりま