- 追加された行はこの色です。
- 削除された行はこの色です。
[[TopPage]] > [[演習課題]] > 演習3-1 サーバとクライアント
* サーバとクライアント [#p4b71776]
それでは,ネットワークのプログラミングを始めましょう!
※この演習では時間が少ないため,ネットワークの''プログラミングの枠組み(スケルトン)''をダウンロードしてもらい,''それを改良する''ことでネットワークのプログラミングについて学ぶという方針をとります.
JavaはC言語と似ており,幸運なことに,皆さんはC言語を習得していますので,Javaのプログラムの理解については,大きな問題は少ないと思います.
まず,下記のプログラムをダウンロードしてください.
&ref(MyServer.java,,,MyServer.java ダウンロード);/[[ソースコードファイルを見る>http://yoshino.sys.wakayama-u.ac.jp/netprog/source/MyServer.java]]~
&ref(MyChatClient.java,,,MyChatClient.java ダウンロード);/[[ソースコードファイルを見る>http://yoshino.sys.wakayama-u.ac.jp/netprog/source/MyChatClient.java]]
*** 説明 [#e99668ec]
この2つのプログラムは,チャットを行うためのプログラムです.
- ''MyServer.java''はサーバ用のプログラムです.サーバというのは,ユーザがつなぎに来るのを待っているプログラムのことです.
- ''MyChatClient.java''はクライアント用のプログラムです.クライアントというのは,ユーザが利用するプログラムです.
この両方のプログラムを動かします.単体では動作しません.
COLOR(red):ネットワークプログラミングには,常に通信相手が必要です.
*** コンパイル&実行方法 [#a0e994c7]
+ コマンドプロンプトを起動します.
+ MyServer.java, MyChatClient.javaの両方をコンパイルします.
Z:\java> javac MyServer.java
Z:\java> javac MyChatClient.java
+ サーバ''MyServer''を実行します.~
図1.のような警告ダイアログが表示された場合、「このプログラムについてはこのメッセージを表示しない」にチェックをつけて、[OK]ボタンをクリックしてください.~
「The server has launched!」が表示されたら,正常にサーバが起動しています.
Z:\java> java MyServer
The server has launched!
#ref(firewall.png,center,nolink)~
CENTER:&size(10){図1. クライアント画面};~
// クライアント
+ クライアント''MyChatClient''を実行します~
別々のパソコンで動かすと通信をしている感じがしますが,今は一台のパソコンで2つのクライアントプログラムを動かします.~
&color(red){''新しく''コマンドプロンプトを起動};し,MyChatClientを実行します.
クライアント起動時に''名前の入力''を要求されますので,名前を入力します.
Z:\java> java MyChatClient
#ref(MyChatClient_window.PNG,center,nolink);~
CENTER:&size(10){図2. クライアント画面};~
~
+ 別のコマンドプロンプトを利用して,2つめのMyChatClientを実行します.
同じようにクライアントの起動時に名前の入力を要求されますので,先とは別の名前を入力します.
+ クライアントの上にあるのフィールドに何か言葉をいれて,「Send」ボタンを押してください.もう一方のクライアントの下のフィールドにその入力した言葉が表示されることを確認してください.
+ &size(14){''プログラムの停止方法''};~
クライアントは,&color(red){ウィンドウの閉じる(×印)を押す};と終了します.~
サーバは,&color(red){キーボードの[Ctrl] キーを押しながら[C]を押す};と終了します.
** 確認 [#m1a22146]
サーバの起動しているコマンドプロンプトを見てみましょう.
Z:\java>java MyServer
The server has launched!
Accept client No.1
Accept client No.2
Received from client No.1(Yoshino), Messages: こんにちは.
Send messages to client No.1
Send messages to client No.2
Received from client No.2(Fujii), Messages: お元気ですか?
Send messages to client No.1
Send messages to client No.2
Disconnect from client No.1(Yoshino)
- ''3-4行目'':Accept client No.1,Accept client No2は,クライアントが接続したときに表示されます.
- ''5行目(8行目)'':Received from client No.1...のは,clientの番号と最初に入力した名前,送信メッセージが表示されています.
- ''6-7行目(9-10行目)'':サーバからクライアントにメッセージを送ったことを示しています.
&size(16){[[&ref(http://yoshino.sys.wakayama-u.ac.jp/netprog/next.gif,nolink); 次の演習(3-1-1)>演習3-1-1 MyServer.java]]};