Эта статья разделяет для вас простой инструмент чата, я надеюсь, вам понравится.
Код работает, как показано на рисунке, и выглядит довольно хорошо
Серверная сторона
пакет Qiu; import java.awt.borderlayout; import java.awt.event.actionevent; импорт java.awt.event.actionlistener; import java.awt.print.printable; импорт java.io.bufferedread; импорт java.io.ioexception; импорт java.inpuremerreader; java.net.serversocket; import java.net.socket; import java.util.calendar; импорт javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.jextraare; Простой программное обеспечение для чата * */public Class myserver Extends jframe реализует ActionListener {jTextArea jTextArea = null; // однострочная область, используемая для отображения простого текста JTextField jTextField = null; // Это может быть разрешено редактировать однострочный текст jbutton sendbutton = null; Jpanel jpanel = null; Jscrollpane jscrollpane = null; // Отправить информацию на клиентский объект printwriter printwriter = null;/*** Основная функция на сервере**/public static void main (string [] args) {// todo автоматически сгенерированный метод. JTextArea (); JTextField = new JTextField (20); sendbutton = new jbutton ("send"); sendbutton.addactionListener (это); sendbutton.setActionCommand ("Send"); jscrollpane = new jscrollpane (jtextarea); jpanel = new jpanel (); jpanel.add (jtextfield); // Добавить коробку редактирования jpanel.add (sendbutton); // Добавить кнопку // Добавить макет двух панелей this.add (jscrollpane, borderlayout.center); это. это. Setize (400 300); this.setTitle ("Сервер чата"); this.setDefaultCloseoPeration (jframe.exit_on_close); // Установить кнопку выхода this.setvisible (true); this.SetReSizable (true); // Ниже приведен конструкция сервера Socket Try {// Сервер слушает Serversocket SS = New Serversocket (9988); // ожидание клиента подключить сокет сокета = ss.accept (); // Получение потока данных, отправленных клиентом BufferedReader BR = New BufferedReader (New InputStreamReader (socket.getInputStream ())); printwriter = new PrintWriter (socket.getOutputStream (), true); // Читать информацию, отправленную из клиента, пока (true) {string info = br.readline (); jtextarea.append ("client"+gettime ()+"/r/n"+info+"/r/n"); }} catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }}/*** используется для получения текущего времени* @return Current Time*/public String getTime () {// Calendar C = Calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // получить час int miname = c.get (calendar.minute); int second = c.get (calendar.second); возврат час+":"+минута+":"+второй; }/*** Вызывается, когда кнопка нажимается*/@overridepublic void actionperformed (actionevent e) {// todo автоматически сгенерированный метод // call if (e.getActionCommand (). Equals ("send")) {// Отправить контент, написанный сервером в JTextField на клиенту info = jText.getText (); 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; импорт javax.swing.jpanel; импорт javax.swing.jscrollpane; импорт javax.swing.jectrectare; Класс MyClient Extens 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 автоматически сгенерированный метод. JTextField = new JTextField (20); sendbutton = new jbutton ("send"); sendbutton.addactionListener (это); sendbutton.setActionCommand ("Send"); jscrollpane = new jscrollpane (jtextarea); jpanel = new jpanel (); jpanel.add (jtextfield); jpanel.add (sendbutton); this.add (jscrollpane, borderlayout.center); это. это. setize (400, 300); this.setTitle ("Catt Client"); this.setDefaultCloseoPeration (jframe.exit_on_close); this.setvisible (true); this.SetReSizable (true); // код связи сокета Try {Socket S = New Socket ("127.0.0.1", 9988); BufferedReader BR = новый BufferedReader (New InputStreamReader (S.GetInputStream ())); printwriter = new PrintWriter (s.getOutputStream (), true); while (true) {// непрерывно читать информацию, отправленную сервером String string = br.readline (); jtextArea.append ("server"+gettime ()+"/r/n"+string+"/r/n"); }} catch (Unknownhostexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }}/*** Используется для получения текущего времени* @return Current Time*/public String getTime () {// Каждый отдельный домен времени может быть изменен календарь c = calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // получить час int miname = c.get (calendar.minute); int second = c.get (calendar.second); возврат час+":"+минута+":"+второй; }/*** Вызовов, когда кнопка нажимается*/@overridepublic void actionperformed (actionevent e) {// todo автоматически сгенерированный метод if (sendbutton.getActionCommand (). Equals ("send")) {string info = jTexfield.getText (); // Отправить информацию, отправленную клиентом на сервер jtextarea.append ("client"+gettime ()+"/r/n"+info+"/r/n"); printwriter.println (info); jtextfield.settext (""); }}} Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.