Este artículo comparte una herramienta de chat simple para ti, espero que te guste.
El código se ejecuta como se muestra en la figura y se ve bastante bien
Lado del servidor
paquete qiu; import java.awt.borderlayout; import java.awt.event.accionEvent; import java.awt.event.actionListener; import java.awt.print.printable; import java.io.bufferedreer; import java.io.ioexception; import java.io.inputstreamreader; 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.jtextearea; import javax.swing.swing; Servidor para software de chat simple * */clase pública myServer extiende jframe implementa actionListener {jTextArea JTextArea = NULL; // Área de línea única utilizada para mostrar el texto sin formato jTextfield jtextfield = null; // Se puede permitir editar el texto de una sola línea JButton SendButton = null; Jpanel jpanel = nulo; JscrollPane jscrollPane = null; // Envía información al objeto cliente imprimwriter printWriter = null;/*** función principal en el servidor**/public static void main (string [] args) {// toDO Auto Generated Method stub New MyServer ();}/*** El constructor del servidor, utilizado para*** public myServer () {////aquí es la inicialización de Gui Inicialización de la Gui Jes. JTextArea (); JTextField = new JTextfield (20); sendButton = new JButton ("Enviar"); sendButton.addactionListener (esto); sendButton.SetActionCommand ("Enviar"); jscrollPane = new JScrollPane (JTextArea); jpanel = new JPanel (); jpanel.add (jTextfield); // Agregar el cuadro Editar jpanel.add (sendButton); // Agregar botón // Agregar el diseño de los dos paneles this.add (jscrollpane, borderLayout.center); this.add (JPanel, BorderLayout.South); this.setsize (400,300); this.settitle ("servidor de chat"); this.setDefaultCloseOperation (jframe.exit_on_close); // Establezca el botón de salida this.setVisible (true); this.setResizable (verdadero); // La siguiente es la construcción del servidor Socket Try {// El servidor escucha Serversocket ss = new ServerSocket (9988); // esperando que el cliente conecte el socket de socket = ss.accept (); // Obtenga la transmisión de datos enviada por el cliente BufferedReader BR = New BufferedReader (nuevo InputStreamReader (Socket.GetInputStream ())); printWriter = new PrintWriter (Socket.getOutputStream (), true); // Lea la información enviada desde el cliente mientras (true) {String info = br.readline (); JTextArea.Append ("Client"+getTime ()+"/r/n"+info+"/r/n"); }} Catch (ioException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }}/*** Se usa para obtener la hora actual* @return hora actual*/public string gettime () {// calendar c = calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // Obtener la hora int mind = c.get (calendar.minute); int segundo = c.get (calendar.second); Hora de retorno+":"+minuto+":"+segundo; }/*** llamado cuando se hace clic en el botón*/@overridePublic void actionperformed (ActionEvent e) {// tODO Auto Generated Method stub // call if (e.getActionCommand (). Equals ("Send")) {// Envía el contenido escrito por el servidor en jTextfield a la cadena de cliente = jTextfield.gettext (); JTextArea.Append ("Server"+getTime ()+"/r/n"+info+"/r/n"); printwriter.println (info); // Claramente enviar contenido de casilla jTextfield.setText (""); }}}Cliente
paquete qiu; import java.awt.borcyloyout; 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.prainwriter; import java.et.etsocket; java.net.unknownHostexception; import java.util.calendar; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.jtextarea; import javax.swing.jtextfield;/software* ... */public class myClient extiende jframe implementos actionListener {jTextArea JTextArea = null; JTextfield JTextfield = null; Jpanel jpanel = nulo; JscrollPane jscrollPane = null; JButton sendButton = null; PrintWriter printWriter = null;/*** La función principal del cliente**/public static void main (string [] args) {// tODO método generado automático stub new myClient ();}/*** El constructor del cliente se usa para inicializar**/public myClient () {// GUI JTEXTAREA = New JtexTarea (); JTextField = new JTextfield (20); sendButton = new JButton ("Enviar"); sendButton.addactionListener (esto); sendButton.SetActionCommand ("Enviar"); 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 (verdadero); this.setResizable (verdadero); // código de comunicación de socket intente {socket s = nuevo socket ("127.0.0.1", 9988); BufferedReader BR = new BufferedReader (new InputStreamReader (s.getInputStream ())); printWriter = new PrintWriter (s.getOutputStream (), true); while (true) {// Lea continuamente la información enviada por la cadena del servidor String = br.readline (); JTextArea.Append ("Server"+getTime ()+"/r/n"+String+"/r/n"); }} Catch (desconocidoHostException e) {// TODO BLOQUE DE CABTA AUTO GENERADA E.PRINTSTACKTRACE (); } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); }}/*** Se usa para obtener la hora actual* @return hora actual*/public string gettime () {// Cada dominio de tiempo individual puede modificarse calendario c = calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // Obtener la hora int mind = c.get (calendar.minute); int segundo = c.get (calendar.second); Hora de retorno+":"+minuto+":"+segundo; }/*** llamado cuando se hace clic en el botón*/@overridePublic void actionperformed (ActionEvent e) {// tODO Auto-Generated Method stub if (sendButton.GetActionCommand (). Equals ("Send")) {String info = jTextfield.getText (); // Envía la información enviada por el cliente al servidor jtexTarea.append ("cliente"+gettime ()+"/r/n"+info+"/r/n"); printwriter.println (info); jTextfield.setText (""); }}} Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.