I.概要
TCP通信2台のコンピュータ、通信の両端間のデータ交換を可能にし、厳密なクライアント(クライアント)とサーバー(サーバー)に分割する必要があります。
通信ステップの終了します。
1、サーバプログラムは、あなたがクライアント接続を待って、事前に起動する必要があります。
図2は、クライアントが積極的にサーバーに接続し、接続が通信するために成功しています。サーバーは、クライアントを接続するためのイニシアチブを取ることができません。
Javaでは、それはTCP通信プログラムを実装するために2つのクラスを提供します。
1. クライアント:のjava.net.Socketクラスを表します。作成したSocketオブジェクト、サーバーに送信された接続要求、サーバは両方の通信を開始するための接続を確立するための要求に応答します。
2、サーバー:java.net.ServerSocketクラスを表します。サービスを開くことが相当し、クライアント接続を待機するServerSocketオブジェクトを作成します。
二、Socketクラス
ソケットクラス:このクラスは、クライアントソケットを実装し、ソケットは、2つのデバイス間の通信のエンドポイントを指します。
1、工法
公共のソケット(文字列のホスト、int型ポート):ソケットオブジェクトを作成し、指定されたホスト上の指定されたポート番号に接続します。指定されたホストがnullの場合、ループバックアドレスとして指定されたアドレスに相当します。
ヒント:ループバックアドレス(127.xxx)がデータを送信するためにループバックアドレスを使用することによって、どんなプログラム、主にネットワーク間のソフトウェアのテストだけでなく、ローカルのプロセス間通信のために、ローカルループバックアドレス(ループバックアドレス)ではありませんが、任意のネットワーク伝送せずに、すぐに戻ります。
方法の2、メンバー
公共のInputStreamのgetInputStream():このソケットの入力ストリームを返します。
-
- 通信は、関連するソケットを有する場合、すべての操作は、このチャネルに関連付けられている入力ストリームを生成しました。
- クローズ生成されたInputStreamが関連付けられているソケットを閉じます。
- 通信は、関連するソケットを有する場合、すべての操作は、このチャネルに関連付けられている入力ストリームを生成しました。
公共のOutputStreamのgetOutputStream():ソケットの出力ストリームを返します。
-
- チャネルは、関連するソケットを有する場合、発生のOutputStreamのすべての操作は、チャネルに関連付けられています。
- クローズ生成されたOutputStreamは、関連付けられたソケットを閉じます。
公共ボイド近い():このソケットを閉じます
-
- ソケットが閉じられると、それは再利用することはできません。
- 関連したInputStreamとOutputStreamを閉じます。このソケットを閉じます。
ます。public void shutdownOutput():無効ソケット出力ストリーム
-
- 以前に書き込まれたデータが出力ストリームを終了する、送信します。
三、ServerSocketのクラス
ServerSocketのクラス:このクラスは、サーバソケットを実装して、オブジェクトは、ネットワーク上の要求を待っています。
1、工法
公共のServerSocket(INTポート):ServerSocketオブジェクトを作成する場合、特定のポート番号にバインドすることができ、この工法では、ポート番号は、ポートパラメータです。
デモ:
ServerSocketをサーバー=新しいServerSocketを(6666);
方法の2、メンバー
以下のために待機し、接続を受け入れ、新しいSocketオブジェクトを返し、クライアントが通信するために:公共のソケットは、()が受け入れます。接続が確立されるまで、このメソッドはブロックします。
第四に、簡単なTCPネットワークプログラム
分析は、TCP通信を示しています
図1は、[サーバ]の接続を待って、ServerSocketオブジェクトの作成を開始します。
2、[クライアント]は、接続を要求し、Socketオブジェクトを作成し、開始します。
図3は、[サーバ]受電コネクタ、受け入れるメソッドが呼び出され、ソケットオブジェクトを返します
4、[クライアント] Socketオブジェクトは、取得のOutputStreamは、サーバーにデータを書き込みます
5、[サーバー] Socketオブジェクト、InputStreamを取得するには、クライアントから送信されたデータを読み込みます。