diff --git a/src/j3/Thttpd.java b/src/j3/Thttpd.java index 638b2c3..6471935 100644 --- a/src/j3/Thttpd.java +++ b/src/j3/Thttpd.java @@ -13,9 +13,13 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; +import java.net.InetAddress; +import java.net.NetworkInterface; import java.net.ServerSocket; import java.net.Socket; +import java.net.SocketException; import java.time.LocalDateTime; +import java.util.Enumeration; // Thttpdクラス public class Thttpd { @@ -24,14 +28,15 @@ ServerSocket servsock = null; Socket sock; - // その他 if (args.length == 0) // 引数がない場合、以下のファイルを返すことにする args = new String[] { "src/j3/index.html", "8000" }; // 相対パスで指定。windowsの場合、user.dir=NWP // args = new String[] { "j3/index.html" ,"8000"};//Linuxの場合、通常はcd NWP/srcしているはず - System.out.println("このサーバは" + args[0] + "を返します。"); - System.out.println(System.getProperty("user.dir")); int portnum = Integer.parseInt(args[1]); + System.out.println("このサーバは" + args[0] + "を返します。ポート番号は "+portnum+" です。"); + // System.out.println(System.getProperty("user.dir")); + + showUrls(portnum); try { // サーバ用ソケットの作成(デフォルトでは、ポート番号8000番) servsock = new ServerSocket(portnum); @@ -44,6 +49,30 @@ System.exit(1); // 異常終了は1 } } + + /** + * ネットワークインタフェースを調べて、10.104ではじまるIPアドレスについて表示する + */ + public static void showUrls(int pnum){ + Enumeration interfaces; + try { + interfaces = NetworkInterface.getNetworkInterfaces(); + while (interfaces.hasMoreElements()) { + NetworkInterface n = (NetworkInterface) interfaces.nextElement(); + Enumeration addresses = n.getInetAddresses(); + while (addresses.hasMoreElements()) { + InetAddress i = (InetAddress) addresses.nextElement(); + String ip = i.getHostAddress(); + String[] seg = ip.split("\\."); // .で文字列分割 + if (seg.length==4) //分割したセグメントが4つあればIPv4 + System.out.println("http://"+ip+":"+pnum); + } + } + } catch (SocketException e1) { + e1.printStackTrace(); + } + + } } class RequestHandler implements Runnable {