この記事では、ソケットシンプルなチャットツールを共有しています。気に入っていただければ幸いです。
図に示されているようにコードは実行され、かなり良さそうです
サーバー側
package qiu;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.print.Printable;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.serversocket; Import java.net.socket; Import java.util.calendar; Import javax.swing.jbutton; Import javax.swing.jframe; Import javax.swing.jpanel; Import javax.swing.jscrollpane; Import javax.swing.swing.swing.swing.swing.swing.swing.swing.swing.swing.swing.swing.swing.swing.wing javax.swing.jtextfield;/*** Server for Simple Chat Software**/Public Class MyServer拡張jframe explments actionlistener {jtextarea jtextarea = null; //単純なテキストを表示するために使用されるシングルライン領域jtextfield jtextfield = null; jpanel jpanel = null; jscrollpane jscrollpane = null; //クライアントオブジェクトに情報を送信してprintwriter printwriter = null;/***サーバー上のメイン関数***/public static void main(string [] args){// todo auto-fenerated method new myserver();}/**** jtextarea(); jtextfield = new jtextfield(20); sendbutton = new jbutton( "send"); sendbutton.addactionlistener(this); sendbutton.setActionCommand( "send"); jscrollpane = new jscrollpane(jtextarea); jpanel = new JPanel(); jpanel.add(jtextfield); //編集ボックスJpanel.add(sendbutton); // add button // 2つのパネルのレイアウトを追加します。 this.add(jpanel、borderlayout.south); this.setsize(400,300); this.settitle( "Chat Server"); this.setDefaultCloseoperation(jframe.exit_on_close); // exitボタンthis.setVisible(true); this.SetSizable(true); //以下は、ソケットサーバーの構築を試してください{//サーバーはServersocket ss = new Serversocket(9988)を聴きます。 //クライアントがソケットソケット= ss.Accept()を接続するのを待っています。 //クライアントBufferedReaderによって送信されたデータのストリームを取得しますbr = new BufferedReader(new inputStreamReader(socket.getInputStream()); printwriter = new PrintWriter(socket.getOutputStream()、true); //クライアントから送信された情報を読むwhile(true){string info = br.readline(); jtextarea.append( "client"+gettime()+"/r/n"+info+"/r/n"); }} catch(ioException e){// dodo auto-enerated catch block e.printstacktrace(); }}/***現在の時間を取得するために使用* @return現在の時間*/public string gettime(){// calendar c = calendar.getinstance(); int hour = c.get(calendar.hour_of_day); // hour hour hour int minute = c.get(calendar.minute); int second = c.get(calendar.second); return hour+":"+minute+":"+second; }/***ボタンがクリックされたときに呼び出されます*/@overridepublic void actionperformed(actionevent e){// dodo auto-fublated method stub // call if(e.getactionCommand()。equals( "send"){// jtextfieldのサーバーによって書かれたコンテンツがjtextfield infold.jtextfieldに送信します。 jtextarea.append( "server"+gettime()+"/r/n"+info+"/r/n"); printwriter.println(info); //ボックスコンテンツを明確に送信しますjtextfield.settext( ""); }}}クライアント
package qiu;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.net.unknownhostexception; Import java.util.calendar; Import javax.swing.jbutton; Import javax.swing.jframe; import javax.swing.jpanel; Import javax.swing.jscrollpane; */public class myClient拡張jframeを実装するactionlistener {jtextarea jtextarea = null; jtextfield jtextfield = null; jpanel jpanel = null; jscrollpane jscrollpane = null; jbutton sendbutton = null; printwriter printwriter = null;/***クライアントのメイン関数***/public static void main(string [] args){// todo auto-denerated method stub new myclient();}/***クライアントコンストラクターは、初期化**/public myclient(){// gui初期化Jtextarea = New JTextarea(); jtextfield = new jtextfield(20); sendbutton = new jbutton( "send"); sendbutton.addactionlistener(this); sendbutton.setActionCommand( "send"); jscrollpane = new jscrollpane(jtextarea); jpanel = new JPanel(); jpanel.add(jtextfield); jpanel.add(sendbutton); this.add(jscrollpane、borderlayout.center); this.add(jpanel、borderlayout.south); this.setsize(400、300); this.settitle( "Chat Client"); this.setDefaultCloseoperation(jframe.exit_on_close); this.setVisible(true); this.SetSizable(true); //ソケット通信コードtry {socket s = new Socket( "127.0.0.1"、9988); BufferedReader BR = new BufferedReader(new inputStreamReader(s.getInputStream())); printWriter = new PrintWriter(S.GetOutputStream()、true); while(true){//サーバーString = br.readline()によって送信された情報を継続的に読み取ります。 jtextarea.append( "server"+gettime()+"/r/n"+string+"/r/n"); }} catch(unknownhostexception e){// todo auto-fenated catch block e.printstacktrace(); } catch(ioException e){// todo auto-fenated catch block e.printstacktrace(); }}/***現在の時間を取得するために使用* @return現在の時間*/public string gettime(){//個々の時間ドメインはカレンダーc = calendar.getInstance()を変更できます。 int hour = c.get(calendar.hour_of_day); // hour hour hour int minute = c.get(calendar.minute); int second = c.get(calendar.second); return hour+":"+minute+":"+second; }/***ボタンがクリックされたときに呼び出されます*/@overridepublic void actionperformed(actionEvent e){// todo auto-fulatedメソッドスタブif(sendbutton.getactionCommand( ")。 //クライアントから送信された情報をサーバーjtextarea.append( "client"+gettime()+"/r/n"+info+"/r/n"); printwriter.println(info); jtextfield.settext( ""); }}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。