TCPソケットを利用した簡単なechoコネクションのサーバ/クライアントプログラムを作成します。 2台のLAN注)で接続されたパソコンにプログラムを作成し、クライアントから何らかの文字列をサーバに送信すると、 サーバは受信したままの形の文字列をクライアントに返します。(echoコネクション注)) サーバとクライアントのプログラムのクラスは EchoServer、 EchoClient とし、 全体では次のような流れになります。
TCPではデータを送受信する前にサーバとクライアントでコネクションが確立されている必要があります。 実際にはクライアント側から[SYN]コードの送信、それに対するサーバ側からの[SYN]+[ACK]コードの送信、 さらにクライアント側からの[ACK]コードの送信という具合に、3回のデータのやり取りでコネクションを確立します。(3ウェイ・ハンドシェイク) Javaのプログラムではこの様なコレクション確立は、次のクラスとして用意されています。 ServerSocketクラスは指定のポート番号への接続要求を受け付けるためのソケットを作成し(サーバ側)、 Socketクラスは待ち受けているポート番号への接続を行うためのソケットを作成します(クライアント側)。 通常サーバとクライアントが接続された場合は、データの送受信が完了しコネクションを切断するまで他のクライアントはサーバに接続できません。 サーバ側は複数のクライアントと接続するために、接続後の処理はスレッドとして新しいソケットでやり取りさせ、再度接続の要求を待つようにしなければなりません。