1。概要
ソケットクラスは、JavaがクライアントTCP操作を実行するための基本クラスです。このクラス自体は、コードを使用して、ホストオペレーティングシステムのローカルTCPスタックを介して通信します。ソケットクラスのメソッドは、接続を確立および破壊し、さまざまなソケットオプションを設定します。
Serversocketクラスは、サーバー側の操作を実行するJavaの基本クラスです。このクラスはサーバー上で実行され、インバウンドTCP接続を聴きます。各ソケットサーバーは、サーバーのポートを聴きます。リモートホストのクライアントがこのポートに接続しようとすると、サーバーは起きて、2つのホスト間のソケットを表す通常のソケットオブジェクトを返します。
2。TCPとは何ですか?
TCPは、接続指向の信頼性の高いバイトストリームベースのトランスポートレイヤー通信プロトコルです。 TCP通信はクライアントとサーバーに分割され、対応するオブジェクトはそれぞれソケットとサーバーソケットです。
コンピューターが別のリモートコンピューターに接続する必要がある場合、TCPプロトコルでは、データを送信および受信するための仮想リンクである接続を確立できます。 TCPプロトコルは、情報パケットを収集し、適切な順序で送信し、受信側で受信した後に正しく戻す責任があります。データパケットが送信中に正確であることを確認するために、TCPは再送信メカニズムを使用します。通信エンティティが別の通信エンティティにメッセージを送信する場合、別のエンティティの確認情報を受信する必要があります。確認情報が受け取られていない場合、今すぐ送信された情報は再びresります。
iii。 TCP通信
1。コンストラクター
ソケットクラスはクライアントソケットを実装し、コンストラクターは接続するホストとポートを指定できます。ホストはInetAddressまたは文字列として指定でき、ポートは常に0〜65535の間のINT値として指定されます。
ソケットS = new Socket( "127.0.0.1"、10001); //ストリームソケットを作成し、指定されたホストの指定されたポート番号に接続します
Serversocketクラスはサーバーソケットを実装します。サーバーソケットは、リクエストがネットワークを介して渡されるのを待機し、リクエストに基づいていくつかの操作を実行し、結果をリクエスターに返します。
Serversockets = new Serversocket(10001); //特定のポートにバインドされたサーバーソケットを作成する
2。例:TCPファイルのコピー
クライアント:
Public Class ClientDemo {public static void main(string [] args)throws nownowshostexception、ioexception {socket s = new socket( "127.0.0.1"、10004); bufferedreader buf = new bufferedreader(new fileereader( "c://users//administrator//desktop/1.t"); line = null;/*printwriter out = new PrintWriter(s.getOutputStream()、true); while((line = buf.readline())!= null){out.println(line); } */bufferedwriter out = new BufferedWriter(new outputStreamWriter(s.getOutputStream())); while((line = buf.readline()) str = in.readline(); system.out.println(str); s.close(); buf.close();}}}}サーバー側:
public class serverdemo {public static void main(string [] args)throws ioexception {serversocket ss = new Serversocket(10004); socket s = ss.accept(); bufferedreader in = new bufferedreader(new inputstreamreader(s.getInputStream()); filewriter( "c://users//administrator//desktop//2.txt")、true); while((line = in.readline())!= null){buf.println(line); }*/bufferedwriter buf = new bufferedWriter(new filewriter( "c://users//administrator//desktop//2.txt"))) printwriter(s.getOutputStream()、true); out.println( "転送成功!"); ss.close(); buf.close();}}}4。ブラウジングに関するソケットのアプリケーション
サーバー側をEclipseで書き込み、ブラウザを使用してアクセスできます。
たとえば、サーバー側のコードは次のとおりです。
public class socketserver {public static void main(string [] args)throws ioexception {serversocket server = new Serversocket(11000); Socket Client = server.accept(); printwriter out = new PrintWriter(client.getOutputStream()、true); out.println( "hello!"); server.close(); }}次に、IEブラウザを開き、アドレスにhttp://192.168.1.120:11000/を入力します(192.168.1.120はローカルIPアドレスです)、結果は
通常のアプリケーションでは、ブラウザはTomacatサーバーにリクエストを発行して、Webページ画像などのリソースを取得します。 Tomcaは、Javaで書かれたサーバー側のソフトウェアです。
次に、サーバー側を次のように書きます。
public class socketserver {public static void main(string [] args)throws ioexception {serversocket server = new Serversocket(11000); Socket Client = server.accept(); printwriter out = new PrintWriter(client.getOutputStream()、true); BufferedReader in = new BufferedReader(new inputStreamReader(client.getInputStream()));文字列line = null; while((line = in.readline())!= null)system.out.println(line); out.println( "hello!"); server.close(); }}次に、ブラウザでアクセスすると、ブラウザ(クライアント)からサーバーに送信されたリクエストヘッダーデータが次のことがわかります。
上記の原則を使用して、IEと同様のブラウザサイド(クライアント)ソフトウェアを自分で書くことができます。最初に、TomcatのインストールディレクトリC:/Apache-tomcat-7.0.62/webapps/mywebにdemo.htmlリソースを追加してから、クライアントを書きます。コードは次のとおりです。
Public Class ClientDemo {public static void main(string [] args)throws nownshostexception、ioexception {socket s = new socket( "192.168.1.120"、8080); printwriter out = new Printwriter(s.getOutputStream()、true); http/1.1 "); out.println(" accept:*/*"); out.println(" host:192.168.1.120:11000"); out.println( "connection:keep-alive"); // output empty lines、このステップはoutpensable.println(); inputStreamReader(s.getInputStream())); string line = null; //サーバーの応答ファイルを返しますwhile(line = in.readline())次に、Tomcatを開始します。つまり、c:/apache-tomcat-7.0.62/binでstartup.batファイルをダブルクリックします。次に、上記のクライアントコードを実行すると、Tomacatによって返された応答データが表示されます。
要約します
上記は、Java Networkプログラミングに関するこの記事のTCP通信の完全なコード例であり、すべての人に役立つことを願っています。興味のある友達は引き続きこのサイトを参照できます:
Javaネットワークプログラミングの基本:一方向の通信
Javaマルチスレッドプログラミングでソケット通信を実装するためのサンプルコード
スレッド通信コードプロデューサーの消費者モデルとJavaマルチスレッドの待機ウェイクアップメカニズムの詳細な説明
欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!