この記事では、JavaプログラミングのTCPプロトコルに基づいたソケットチャットルームの実装について説明します。次のように、参照のために共有してください。
ここでは、ソケットソケットがプログラミングに使用され、TCP信頼できるサービスに基づいてサーバーとクライアント間のデュアル通信を達成します。
サーバーサーバー側:
パッケージcom.han; import java.awt.container; import java.awt.event.actionevent; import java.awt.event.event.event.event.windowadapter; import java.awt.event.windowevent; import java.io.*; Import java.net javax.swing.jdialog; Import javax.swing.jscrollpane; Import javax.swing.jtextarea; Import javax.swing.jtextfield;/***このプログラムは、サーバープログラミング部分をTCPプログラムの一部を実装しています。 *ソケットソケットを使用したプログラミングは、TCP信頼できるサービスに基づいてクライアントとのデュアル通信を実現するために行われます。 *プログラミングについては、このパッケージのクライアントクラスクライアントを参照してください * @Author han * */ @suppresswarnings( "serial")パブリッククラスサーバーはjdialog {private bufferedreaderリーダーを拡張します。プライベートプリントライターライター。プライベートサーバーソケットサーバー。プライベートソケットソケット。 private jtextarea ta = new jtextarea();プライベートJScrollpane SP = new JScrollpane(TA); private jtextfield tf = new jtextfield();コンテナCC; public server(string title){settitle(title); addwindowlistener(new windowadapter(){public void windowclosing(windowevent we){dispose(); //ダイアログsystem.exit(0)に関連するすべての関連リソースを取り消す; //プログラムを通常}}); cc = getContentPane(); SetLayout(null); ta.setlineWrap(true); ta.setedable(false); sp.setbounds(0,0,300,342); tf.setbounds(0,342,300,25); cc.add(sp); cc.add(tf); TF.AddActionListener(new ActionListener(){public void ActionPerformed(actionEvent e){try {writer = new Printwriter(socket.getOutputStrem()、true);} catch(ioException e1){// todo auto-generated catch block e1.printstacttrace(); Ta.Append( "user1:"+tf.getText()+'/n'); } void getServer(){try {server = new Serversocket(8998); Ta.Append( "サーバーソケットが正常に作成されました/n"); while(true){ta.append( "クライアント接続を待機/n"); socket = server.accept(); Ta.Append( "Client Connected/n"); reader = new BufferedReader(new inputStreamReader(socket.getInputStream())); getClientMessage(); }} catch(例外e){e.printstacktrace(); }} private void getClientMessage(){try {while(true){string news = reader.readline(); if(news!= null){ta.append( "user2:"+news+"/n"); } else {ta.append( "user2(client)disconnected/n");壊す; }}} catch(ioexception e){// todo auto-enerated catch block e.printstacktrace(); } try {if(reader!= null){reader.close(); }} catch(ioException e){// dodo auto-enerated catch block e.printstacktrace(); } if(socket!= null){try {socket.close(); } catch(ioException e){// todo auto-fenated catch block e.printstacktrace(); }}} public static void main(string [] args){server user1 = new server( "user1"); user1.setbounds(0,0,300,400); user1.setSesable(false); user1.setVisible(true); user1.getServer(); }}クライアントクライアント:
パッケージcom.han; import java.awt。*; import java.awt.event。*; import java.io。*; import java.net。*; import javax.swing。 *ソケットソケットを使用したプログラミングは、TCP信頼できるサービスに基づいてサーバーとのデュアル通信を実現するために行われます。 *サーバーのプログラミングについては、このパッケージのサーバークラスを参照してください *さまざまなプラットフォームとさまざまなマシンで実行できますが、コードに記載されているIPアドレスは、サーバープログラムサーバーを実行しているマシンのIPアドレスに変更する必要があります。 * @author han * */ @suppresswarnings( "serial")パブリッククラスクライアントはjdialog {private bufferedreader reader;プライベートプリントライターライター。プライベートソケットソケット。 private jtextarea ta = new jtextarea();プライベートJScrollpane SP = new JScrollpane(TA); private jtextfield tf = new jtextfield();コンテナCC;パブリッククライアント(文字列タイトル){settitle(title); addwindowlistener(new windowadapter(){public void windowclosing(windowevent we){dispose(); //ダイアログsystem.exit(0)に関連するすべての関連リソースを取り消す; //プログラムを通常}}); cc = getContentPane(); SetLayout(null); ta.setlineWrap(true); ta.setedable(false); sp.setbounds(0,0,300,342); tf.setbounds(0,342,300,25); cc.add(sp); cc.add(tf); tf.AddActionListener(new ActionListener(){public void ActionPerformed(ActionEvent e){writer.println(tf.getText()); ta.append( "user2:"+'/n'); tf.settext( ");}); } private void connect(){ta.append( "Connect/n"); try {socket = new Socket( "192.168.1.3"、8998); } catch(unknownhostexception e){// todo auto-fenated catch block e.printstacktrace(); } catch(ioException e){// todo auto-fenated catch block e.printstacktrace(); } try {writer = new PrintWriter(socket.getOutputStream()、true); } catch(ioException e){// todo auto-fenated catch block e.printstacktrace(); } ta.append( "接続/nを完了する/n"); } private void getClientMessage(){try {reader = new BufferedReader(new inputStreamReader(socket.getInputStream()); while(true){string news = reader.readline(); if(news!= null){ta.append( "user1:"+news+"/n"); } else {ta.append( "user1(server)が切断されており、サーバーが再接続されている場合、communication/n"のためにuser2(client)を再起動します。壊す; }}} catch(ioException e){// todo auto-fenated catch block ta.append( "user1(server)for communication/n"); e.printstacktrace(); } try {if(reader!= null){reader.close(); }} catch(ioException e){// dodo auto-enerated catch block e.printstacktrace(); } if(socket!= null){try {socket.close(); } catch(ioException e){// todo auto-fenated catch block e.printstacktrace(); }}} public static void main(string [] args){client user2 = new Client( "user2"); user2.setbounds(0,0,300,400); user2.setVisible(true); user2.setSresizable(false); user2.connect(); user2.getClientMessage(); }}Java関連のコンテンツの詳細については、このサイトのトピックをご覧ください:「Javaソケットプログラミングスキルの概要」、「Javaファイルとディレクトリの操作スキルの概要」、「Javaデータ構造とアルゴリズムに関するチュートリアル」、「Java Operation Dom Nodeスキルの概要」、Java Cache操作スキルの概要」
この記事がみんなのJavaプログラミングに役立つことを願っています。