Java
Java
Java2 SE 5.0 API
Java2 SE 1.4 API
Java2 EE API
Struts 1.0.2
MSDN2 Library
MySQL 5.1
MySQL 4.1
HTMLリファレンス
CSSリファレンス
JavaScript
基本カラーチャート
カレンダー
 最新PG・講座情報
 最新ニュース
 電子辞書・辞典
ご意見・ご要望はこちらまで

課題

Java

TCPソケットプログラミング


1.ソケット・プログラムの概要

1.1 プログラムの仕様

 TCPソケットを利用した簡単なechoコネクションのサーバ/クライアントプログラムを作成します。
 2台のLAN注)で接続されたパソコンにプログラムを作成し、クライアントから何らかの文字列をサーバに送信すると、 サーバは受信したままの形の文字列をクライアントに返します。(echoコネクション注)

 サーバとクライアントのプログラムのクラスは EchoServerEchoClient とし、 全体では次のような流れになります。

  • サーバのクラス(EchoServer)を起動し、クライアントからの接続要求待ちをする。
  • クライアントのクラス(EchoClient)を起動し、サーバと接続する。
  • 接続後は以降の処理をスレッドとして行い、
    サーバは再度クライアントからの接続要求待ちをする。

  • クライアントから文字列を入力し、サーバに文字列を送信する。
  • サーバは文字列を受信し、その文字列をクライアントに送信する。
  • クライアントは文字列を受信し、その文字列を画面に表示する。
  • クライアントから入力と表示を繰り返し、"quit"入力で終了する。
  • サーバのクラスは、Ctrl+[C] で終了する。
  注)ピア・ツー・ピアモデルのネットワーク構成なので、どの端末をサーバとしてもかまいません。
  注)Windowsで「簡易TCP/IPサービス」をインストールしている場合はポート7番がサポートしています。

文字列の入力と表示の流れ(echoコネクション)
 EchoServerのメソッド一覧
No. 戻り値 メソッド名 引数 内容
1 なし (static) main パラメータ(String[])
なし
クライントからの接続要求待ちを行い、
接続後は新規セッション処理(SessionProc)を生成する

 SessionProcのメソッド一覧
No. 戻り値 メソッド名 引数 内容
1 ---- (コンストラクタ) 取得した新しいソケット(Socket) 取得した新しいソケットの設定
2 なし run なし スレッド処理としてソケットからの入出力を行う

 EchoClientのメソッド一覧
No. 戻り値 メソッド名 引数 内容
1 なし (static) main パラメータ(String[])
サーバのIPアドレス
サーバと接続し、ソケットへの入出力を行う



1.2. TCP接続の説明

 TCPではデータを送受信する前にサーバとクライアントでコネクションが確立されている必要があります。 実際にはクライアント側から[SYN]コードの送信、それに対するサーバ側からの[SYN]+[ACK]コードの送信、 さらにクライアント側からの[ACK]コードの送信という具合に、3回のデータのやり取りでコネクションを確立します。(3ウェイ・ハンドシェイク)

 Javaのプログラムではこの様なコレクション確立は、次のクラスとして用意されています。
 ServerSocketクラスは指定のポート番号への接続要求を受け付けるためのソケットを作成し(サーバ側)、 Socketクラスは待ち受けているポート番号への接続を行うためのソケットを作成します(クライアント側)。

 通常サーバとクライアントが接続された場合は、データの送受信が完了しコネクションを切断するまで他のクライアントはサーバに接続できません。 サーバ側は複数のクライアントと接続するために、接続後の処理はスレッドとして新しいソケットでやり取りさせ、再度接続の要求を待つようにしなければなりません。

サーバとクライアントの接続方法

 
 INDEX
  課題 Java TCPソケットプログラミング
1.ソケット・プログラムの概要
  2.サーバ・プログラム
  3.クライアント・プログラム
  4.テストとまとめ
Top
Copyright© 2003-2007 FumikiChan All Rights Reserved.
http://www.fumikichan.net/