Java言語でネットワークサーバーを構築して、クライアントとサーバー間の通信を実現し、クライアントに独立したスレッドがあり、互いに干渉しないことを認識します。
サーバーとマルチスレッド間の通信を実現するためにマルチスレッドを適用するための基本的な手順
サーバーサイドServer.java
パッケージtest.concurrent.socket; java.io.*をインポートします。 java.net.inetAddressをインポートします。 java.net.serversocketをインポートします。 java.net.socketをインポートします。 /*** 15-6-22にドンによって作成されました。 * TCPプロトコルに基づいたソケット通信、ユーザーログイン*サーバーサイド*/パブリッククラスサーバー{public static void main(string [] args){try {// 1。サーバー側のソケット、つまりServersocket、Bound Portを指定し、このポートServersocket Serversocket = new Serversocket(8888)をリッスンします。ソケットソケット= null; //クライアントの数を記録int count = 0; system.out.println( "***サーバーが起動しようとしています。クライアントのリンクを待っています***"); //クライアントのリンクを待機するwhile(true){// accept()メソッドを呼び出してリスニングを開始し、クライアントのリンクソケット= serversocket.accept(); //新しいスレッドServerThread ServerThread = new ServerThread(Socket); //スレッドServerThRead.start()を起動します。 count ++; //クライアントSystem.out.printlnの数を検索( "クライアント数:" + count); inetAddressアドレス= socket.getinetAddress(); System.out.println( "現在のクライアントのIP:" + address.gethostAddress()); }} catch(ioexception e){e.printstacktrace(); }}}サーバー側のスレッド処理クラスServerThread.java
パッケージtest.concurrent.socket; java.io.*をインポートします。 java.net.socketをインポートします。 /*** 15-6-22にドンによって作成されました。 *サーバー側のスレッド処理クラス*/public class serverthread拡張スレッド{//ソケットソケット= null; public serverthread(socket socket){this.socket = socket; } //スレッドによって実行される操作は、クライアントの要求に応答しますpublic void run(){inputstream is = null; inputStreamReader ISR = null; BufferedReader Br = null; outputStream os = null; printwriter pw = null; try {//入力ストリームを取得し、クライアントの情報を読み取ります= socket.getinputStream(); ISR = new inputStreamReader(is); //バイトストリームを文字ストリームに変換しますbr = new BufferedReader(ISR); // buffered文字列情報= nullを追加します。 // loop reading data while((info = br.readline())!= null){system.out.println( "私はサーバーであり、クライアントは「 +info); } socket.shutdowninput(); //入力ストリームを閉じる//クライアントの要求に応じて出力ストリームを取得os = socket.getOutputStream(); pw = new Printwriter(OS); //印刷ストリームとしてパッケージ化されたpw.write( "welcome"); pw.flush(); // cached output} catch(ioexception e){e.printstacktrace(); }最後に{try {//リソースを閉じるif(pw!= null)pw.close(); if(os!= null)os.close(); if(is!= null)is.close(); if(br!= null)br.close(); if(socket!= null)socket.close(); } catch(ioexception e){e.printstacktrace(); }}}} client.java
パッケージtest.concurrent.socket; java.io.*をインポートします。 java.net.socketをインポートします。 /*** 15-6-22にドンによって作成されました。 *クライアント*/public class client {public static void main(string [] args){try {// 1。クライアントソケットを作成し、サーバーポート番号を指定し、アドレスソケットソケット= new Socket( "LocalHost"、8888); // 2。出力ストリームを取得し、Serverに情報を送信しますoutputStream os = socket.getOutputStream(); //バイト出力ストリームprintwriter pw = new Printwriter(OS); //出力ストリームを印刷ストリームとしてラップしますpw.write( "username:tom; password:456"); pw.flush(); socket.shutdownoutput(); //出力ストリームを閉じますinputstream is = socket.getinputStream(); inputStreamReader ISR = new inputStreamReader(is); BufferedReader BR = new BufferedReader(ISR);文字列情報= null; // while((info = br.readline())!= null){system.out.println( "私はクライアントです:サーバーが言う:" + info); } br.close(); is.close(); isr.close(); pw.close(); os.close(); socket.close(); } catch(ioexception e){e.printstacktrace(); }}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。