diff --git a/src/j2/TimeServer.java b/src/j2/TimeServer.java index 7f16bc7..06fcbd7 100644 --- a/src/j2/TimeServer.java +++ b/src/j2/TimeServer.java @@ -15,7 +15,7 @@ import java.util.Date; // TimeServerクラス -class TimeServer { +public class TimeServer { public static void main(String args[]) { ServerSocket svsock = null;// サーバ用ソケット Socket sock;// ソケットの読み書き用オブジェクト @@ -23,18 +23,32 @@ String outstr; // 出力データを格納する文字列 Date d; // 日付時刻処理用オブジェクト + if (args.length < 2) { + args = new String[2]; + args[0] = "0.0.0.0"; + // ローカルホストからの接続のみを受け付ける場合 "127.0.0.1" + // 別のホストからの接続も受け付ける場合 "0.0.0.0" + + // デフォルトでは、ポート5555番を開く + args[1] = "5555"; + } + String bindaddress = args[0]; + int port = Integer.parseInt(args[1]);// 文字列を整数に変換 try { - // サーバソケットの作成 - svsock = new ServerSocket(); - // バインドするアドレスとポートを指定 - int port = 5555; - String bindaddress = "127.0.0.1"; // ローカルホストからのみ受け付ける場合 - //別のホストからの接続も受け付ける場合 "0.0.0.0" - svsock.bind(new InetSocketAddress(bindaddress, port)); // サーバソケットにバインドする=ポートでの待ち受け開始 + svsock = new ServerSocket(); // サーバソケットの作成 + svsock.bind(new InetSocketAddress(bindaddress, port)); // サーバソケットにバインドする=ポートでの待ち受け開始 + } catch (IOException e) { + System.err.println(e); + System.err.println("バインド失敗。ポート番号 " + port + " (Bind-address: " + bindaddress + " 向け) がすでにつかわれているようです"); + System.err.println("ポート番号またはバインドアドレスを変更してください。"); + System.exit(1); + } - System.out.println("(TimeServer) at ["+bindaddress+":"+port+"] \n停止するには CTRL+C をおしてください"); + System.out.println("TimeServer started. [" + bindaddress + ":" + port + "]"); + System.out.println("停止するには CTRL+C をおしてください"); - // サーバ側の処理の繰り返し + // サーバ側の処理の繰り返し + try { while (true) { sock = svsock.accept();// 接続がくるまで待つ System.out.println("(TimeServer) accepted (client has connected)"); @@ -59,12 +73,8 @@ sock.close(); System.out.println("(TimeServer) クライアントからの接続を閉じました"); } - } catch (IOException e) { - System.out.println("*** Exception ***"); - System.out.println(e); - System.exit(1); - } catch (InterruptedException e) { - e.printStackTrace(); + } catch (Exception ex) { + ex.printStackTrace(); } } } diff --git a/src/run2-1.sh b/src/run2-1.sh index c2c2d34..1c6870f 100755 --- a/src/run2-1.sh +++ b/src/run2-1.sh @@ -5,21 +5,27 @@ echo 'Time(Server|Client) コンパイル終了' sleep 2 +echo 'ホスト名の確認 (cat /etc/host)' +cat /etc/host +sleep 2 +echo 'IPアドレスの確認 (ip a)' +ip a | grep inet +sleep 2 + echo "このあと、TimeServerが起動したら、別ターミナルで cd ~/NWP/src をしたあと、下のコマンドを入力してください。" echo "" -echo ">>>> $ java j2.TimeClient localhost 5555"; -echo ""; +echo ">>>> $ java j2.TimeClient localhost 5555" echo "" sleep 3 -echo "それでは TimeServer を起動します。" +echo "それでは TimeServer を起動します。コマンドライン引数で、バインドアドレスとポート番号を指定することができます。" sleep 2 -echo "サーバプログラムを終了するには CTRL+C をおしてください" +echo "TimeServerを終了するには CTRL+C をおしてください" sleep 2 -echo '>' java j2.TimeServer -java j2.TimeServer +echo '>' java j2.TimeServer localhost 5555 +java j2.TimeServer localhost 5555