- 2.1. ソケット
- 2.2. InetAddressクラス
- 2.3. SocketAddress/InetSocketAddressクラス
- 2.4. Socketクラス
- 2.5. TCPサーバプログラム
- 2.6. TCPクライアントプログラム
- 2.7. プログラムの実行
2.7. プログラムの実行
それでは実際にプログラムを実行してみましょう。まずサーバプログラムを起動します。
サーバが起動すれば上記のようなメッセージが表示されます。もしサーバが起動しないのなら、このサーバが利用しようとしたポート(10007番)がすでに別のアプリケーションで使用されているのかもしれません。すでに使用されているポートを開こうとすると例外が発生します。試しにこのサーバを別ウィンドウで同時に2つ起動してみるとわかります。そのときは、サーバとクライアント両方で定義しているECHO_PORTという定数を他の番号に変更してみて下さい。
問題なくサーバが起動できれば、次にクライアントプログラムを起動します。ここではサーバと同じマシン上で動作させることにします。localhostは自分自身を表す特別なホスト名です。
サーバに接続できれば、ソケットの接続先のIPアドレスとポート名が表示されます。ここで、表示されるIPアドレスが自分のマシンのアドレスと違うと思うかもしれません。127.0.0.1というIPアドレスはループバックアドレスと呼ばれ、常に自分自身を表す特別なIPアドレスです。localhostをIPアドレスに変換すると、通常ループバックアドレスとなります。
サーバに接続した後、キーボードから文字列を入力すると、同じ文字列がサーバから送り返されくることが確認できると思います。サーバ側で次のように表示され、文字列が送受信できていることが確認できます。
(実習課題1)
インターネット上のプロトコルとして、Daytimeプロトコルというものがあります。Daytimeプロトコルにおけるサーバは、ソケットに接続すると、接続してきたクライアントに対して現在の時刻を送り返し、コネクションを切断します。
このDaytimeサーバに接続し、送られてきた時刻情報を表示するクライアントプログラムを作成して下さい。接続先のDaytimeサーバのIPアドレス(またはホスト名)はコマンドラインで指定できるようにして下さい。なお、Daytimeサーバの待ち受けポートは13番で固定とします。
公開されているDaytimeサーバとしては、time.nist.gov があります。実際に接続して、動作を確認して下さい。