私は最近、オンラインWebコミュニケーションが必要なプロジェクトを開始しました。私は長い間コードを書いていません、そして私はそれに不慣れです。そこで、私は最初にデモを書き、それを練習し、それをWulin Networkプラットフォームで共有してレコードを作成し、全員と一緒に使用できるようにしました。
最初に実装の手順を教えてください。
1. AWTコンポーネントとソケットを使用して、シンプルな単一クライアントを実装して、サーバーに継続的にメッセージを送信します。
2。スレッドと組み合わせて、メッセージを送信するためにサーバーへのマルチクライアント接続を実現します。
3.サーバーをすべてのクライアントに転送するサーバーを実装し、同時にクライアントに表示する。
4. AWTコンポーネントによって生成されたウィンドウインターフェイスをフロントエンドJSPまたはHTMLによって表示されるインターフェイスに変更し、Javaソケットによって実装されたクライアントをフロントエンドテクノロジーの実装に変更します。
ここでは、最初に最初のステップの単純な関数を実装します。難易度は次のとおりです。
1.私はAWTコンポーネントを使用したことがなく、Java関連のリスニングイベントを使用したことがありません。
2.クライアントとサーバーの間で対話するために長時間ソケットを使用していないため、CSS構造を実際に開発していません。
関数を実装するコードは次のとおりです。
クライアント:
パッケージchat.chat; java.awt.borderlayoutをインポートします。 java.awt.frameをインポートします。 java.awt.textareaをインポートします。 java.awt.textfieldをインポートします。 java.awt.event.actioneventをインポートします。 java.awt.event.actionlistenerをインポートします。 java.awt.event.windowadapterをインポートします。 java.awt.event.windoweventをインポートします。 java.io.dataoutputStreamをインポートします。 java.io.ioexceptionをインポートします。 java.net.socketをインポートします。 java.net.unknownhostexceptionをインポートします。 / ** *オンラインチャットクライアント1。グラフィカルウィンドウインターフェイスアウトライン2を生成します。アウトラインに近いイベントを追加します3。入力領域とコンテンツディスプレイ領域をアウトラインに追加します4。サーバー接続のキャリッジリターンイベントを追加 * 5。 //コンテンツディスプレイエリアPrivate Textarea Taste = new Textarea();プライベートソケットソケット= null; //データ出力ストリームprivate dataoutputStream dataoutputStream = null; public static void main(string [] args){new chatclient()。launcframe(); } / ** *シンプルなグラフィカルウィンドウを作成 * * @author:tuzongxun * @title:launcframe * @param * @return void * @date 2016年5月18日9:57:00 am * @throws * / public void launcframe(){setlocation(300、200); this.setsize(200、400); add(tftxt、borderlayout.south); add(tarea、borderlayout.north);パック(); //グラフィカルインターフェイスウィンドウのクロージングイベントを聞いてくださいthis.addwindowlistener(new WindowAdapter(){@Override public void windowclosing(windowevent e){system.exit(0); disconnect();}}); tftxt.addactionlistener(new Tflister()); setVisible(true);接続する(); } / ** * connect to the server * * @author:tuzongxun * @title:connect * @param * @return void * @date 5月18日9:56:49 AM * @throws * / public void connect(){try {//新しいサーバー接続socket = new socket(new socket( "127.0.0.0.0.1"、8888); //クライアント出力を取得Streeam dataoutputStream = new DataOutputStream(socket.getOutputStream()); system.out.println( "serverに接続"); } catch(unknownhostexception e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }} / ** * close client resources * * @author:tuzongxun * @title:disconnect * @param * @return void * @date 2016年5月18日9:57:46 am * @throws * / public void disconnect(){try {data outputstream.close(); socket.close(); } catch(ioexception e){e.printstacktrace(); }} / ** * serverにメッセージを送信 * * @author:tuzongxun * @title:sendmessage * @param @param Text * @return void * @date 2016年5月18日9:57:56 AM dataoutputStream.flush(); } catch(ioexception e1){e1.printstacktrace(); }} / ** *キャリッジリターンイベントをリッスンするグラフィックスウィンドウ入力領域 * * @author tuzongxun123 * * / private class tflisterはactionlistener {@override public void actionperformed(actionevent e){string text = tftxt.getText()。トリム(); Taxa.settext(テキスト); tftxt.settext( ""); //サーバーSendMessage(テキスト)にデータを送信します。 }}}サーバ:
パッケージchat.chat; java.io.datainputStreamをインポートします。 java.io.eofexceptionをインポートします。 java.io.ioexceptionをインポートします。 java.net.bindexceptionをインポートします。 java.net.serversocketをインポートします。 java.net.socketをインポートします。 /*** JavaはソケットとAWTコンポーネントを使用して、オンラインチャット関数を単純に実装します。サーバーは、1つのクライアント*を接続した後、サーバーに継続的にメッセージを送信するようにサーバーを実現できますが、複数のクライアントをサポートして同時に接続しません。その理由は、コード内のクライアント接続を取得した後、クライアントの入力がループされているのを聞き続けて、サーバーが2回他のクライアントを聞くことができないように、閉塞*を引き起こすためです。実装する場合は、非同期またはマルチスレッドを使用する必要があります * * @author tuzongxun123 * */ public class chatserver {public static void main(string [] args){//サーバーが起動したかどうかはboolean isstart = false; //サーバーソケットサーバーソケットss = null; //クライアントソケットソケットソケット= null; //サーバーの読み取りクライアントデータ入力Stream DatainputStream DatainputStream = null; try {//サーバーss = new Serversocket(8888); } catch(bindexception e){system.out.println( "ポートは既に使用されている"); //プログラムsystem.exit(0)を閉じます。 } catch(Exception e){e.printstacktrace(); } try {isstart = true; while(isstart){boolean isconnect = false; //リスニングソケット= ss.Accept()を起動します。 System.out.println( "1つのクライアントConnect"); isconnect = true; while(isconnect){//クライアント入力ストリームdatainputStreamを取得= new DatainputStream(socket.getInputStream()); //クライアント文字列= datainputStream.readutf()によって渡されたデータを読み取ります。 system.out.println( "クライアントが言う:" + message); }}} catch(eofexception e){system.out.println( "クライアントクローズ!"); } catch(Exception e){e.printstacktrace(); }最後に{//関連するリソースを閉じるtry {datainputStream.close(); socket.close(); } catch(ioexception e){e.printstacktrace(); }}}}上記は、編集者によって導入されたシンプルなオンラインチャット関数(i)を実装するJavaソケットに関する関連する知識です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!