この例は単純な関数のみを示しており、コードは厳密ではありませんが、クライアントがサーバーに接続する単純なコードを実装する方法のみを説明します。
コードは、下の図に示すように、統合されたEclipseツールの下でコンパイルと実行環境をテストします。
クライアントeCoclient.javaコード:
パッケージcom.zhengzz.echo; Import java.io.bufferedreader; Import java.io.io.ioexception; Import java.io.inputStreamReader; Import java.io.net.Socket; Import java.net.uncondhostexception; class; ECOC {Private Socket Socket; ioException {e.printstacktrace(); public void client(){bufferedreader bufferedreader(socket.getinputstream()); True); bufferedreader(system.in); println(br.readline()); main(string [] args){new echoc()。サーバーeChoServer.javaコード:
パッケージcom.zhengzz.echo; Import java.io.bufferedreader; Import java.io.io.ioexception; Import java.io.inputStreamReader; Import java.io.printwriter; Import java.net.serversocket; Import java.net.socket; class; echos {private serversocket serversocket(){serversocket = new Serversocket(60000); socket = serversocket.accept(); )); printwriter pw = socket.getOutputStream()、string linestr; ( "--->" + linestr); catch(ioexception e){system.out.println( "connection disconnected:(");}}} public class echeCoserver {public static void(string [] ar gs){new echos()。server()}Eclipseツールの下での私の口座デバッグ結果は次のとおりです。
HellowordレベルのJavaソケット通信の例を見てみましょう。コミュニケーションプロセス:
最初にサーバー側を起動し、デッドループを入力して、特定のポートの接続要求があるかどうかを聞き続けます。次に、クライアント側を実行し、クライアントがリクエストをリッスンし、接続が確立され、リクエストの処理を開始し、聴取し続けます。デッドループの他のリクエストに。クライアントが文字列に入ったら、Enterを押してサーバーにデータを送信します。サーバーはデータを読み取り、クライアントデータに応答します。今回はリクエストが処理された後、開始スレッドが消えます。クライアントが「OK」以外の返されたデータを受信した場合、接続要求を再度送信してデータを送信すると、サーバーは接続が応答するためにスレッドを再度開始します。 。 。クライアントは、クライアントが受信した返品データが「OK」になるまで終了します。
サーバーソースコード:
com.decold.io.datainputstream; Socket; public static final int port = 12345; server = new server.init();クライアントが接続されていますserversocket.accept(); );プライベートクラスのHandlerthed Runnable {Socket Client)データdatainputStream input = new DatainputStream(socket.getInputStream()); data system.out "); //キーボード文字列s = new inputStreamReader(system.in))。readline(); out.writeutf(s); out.close(); input.close(); } catch(expecise e){system .out.println( "server run Exception:" + e.getMessage());例外e){socket = null .out.println( "server Excention:" + e.getMessage()}}}}}クライアントソースコード:
com.decold.io.io.datautstream; Socket; public class client {public static final string ip_addr = "localhost"; //アドレスpublic static final int port = 12345; (「クライアントは...」) {//ストリームソケットを作成し、指定されたホストソケットの指定されたポート番号に接続します(IP_ADDR、ポート); // server dataoutputStream out = new DataUtputStream(socket.getOutputStream()); readline(); "。quals(ret)){system.out.println("クライアントは接続を閉じます "); shood.sleep(500);} out.close(); input.close();} catch(例外e ){system.out.println( "クライアント例外:" + e.getmessage()); ; system.out.println( " + e.getmessage()}}}}}}}}注:ソケット出力ストリームがデータ方法を書き込む場合、入力ストリームはReadUTFを使用して関連データを読み取る必要があります。それ以外の場合、Eofexception例外がスローされます。