21.8.10 miniProject


JAVAネットワークの例
参考になるところ
JAVA多室構造
Javaクライアントサーバモデル
TCP
プロジェクトで使用するネットワークモデルはTCP(転送制御プロトコル)ネットワークであり,TCPネットワークではサーバの役割は
1.クライアントが接続を要求したときに接続を受け入れる
2.接続されたクライアントとの通信
1番を担当しているのはjavaですnet.ServerSocketクラス
2番を担当しているのはjavaですnet.Socketレベルです
ここで、サーバは、バインドポートと呼ばれる接続するポートをクライアントに持たせる必要があります.
サーバは固定ポート番号にバインドされて動作するため、SeverSocketの作成時にポート番号を指定する必要があります.
ServerSocket() s1 = new ServerSocket(int port);
ServerSocketは、クライアントが要求を発行したときに()を受け入れます.方法で接続を受け入れ、通信のためのsocketを生成する.
その後、クライアントとサーバはそれぞれのsocketを使用してデータを交換します.
ServerSocketの作成と接続を受け入れる
サーバを開発するには、まずクライアントの接続要求を受信するサーバソケットが必要です.
ServerSocketの作成とバインドには、大きく3つの方法があります.
//1
ServerSocket s1 = new ServerSocket(int port);
//2
ServerSocket s1 = new ServerSocket();
s1.bind(new InetSocketAddress(int port));
//3. 특정 ip로 접속할 때만 연결 수락을 하고 싶을 때.
ServerSocket s1 = new ServerSocket();
s1.bind(new InetSocketAddress("IPAddress", int port));
これでポートバインドが完了すると、サーバソケットはクライアント接続を受け入れるためにaccept()メソッドを実行する必要があります.
accept()メソッドは、クライアントが接続を要求する前にブロックされる.블로킹이란 스레드가 대기 상태가 된다는 뜻이다.ブロックされると、情報更新やイベント処理ができないため、情報更新を行うスレッドやイベント処理を行うスレッドはaccept()メソッドを呼び出すことができません.
クライアントが接続要求を発行すると、accept()はクライアントと通信するsocketを作成して返します.これが接続の受け入れです.
try{
	Socket socketS1 = serverSocket.accept(); 
} catch(Exception e){ }
クライアントの接続を受け入れる必要がなくなった場合は、ポートをアンインストールするためにサーバソケットのclose()メソッドを呼び出す必要があります.
s1.close();
Project Main
プロジェクトで実装するネットワーク構造はマルチチャンバ構造であり、サーバは常にクライアントの接続要求を待つ必要がある.したがって,クライアントとの接続要求とI/O要求,サーバと接続したクライアントの情報送受信を管理するには2つのクラスが必要である.
複数のファイルルームのクラスを管理するには、個別に作成する必要があります.
1.サーバに接続されているクライアント
クライアントがサーバに接続要求を発行すると、クライアントとサーバが作成したソケットが接続されて接続されます(ID->ニックネーム)ログインが完了したクライアントは、サーバに接続されているすべてのクライアント(.add()に追加されます.