Este artigo compartilha uma ferramenta de bate -papo simples para você, espero que gostem.
O código é executado como mostrado na figura e parece muito bom
Lado do servidor
pacote qiu; importar java.awt.borderlayout; importar java.awt.event.actionEvent; importar java.awt.event.actionListener; importar java.awt.print.printable; importestrable; importRead; Java.Net.ServersSocket; importar java.net.socket; importar java.util.calendar; importar javax.swing.jbutton; importar javax.swing.jframe; import javax.swing.jpanel; import.eaMeaReaReax.swing.Jpanel; Import.aMeaReaReaReax.swing.Swing.JPanel; Import.aMeaReax.smports; javax.swing.jtextfield;/*** servidor para software de bate-papo simples**/classe pública MyServer estende JFrame implementa ActionListener {JTexTarea jtextarea = null; // área de linha única usada para exibir texto simples jButfield jtextfield = null; // pode ser permitido para editar single-line Jpanel jpanel = null; JscrollPane jScrollPane = null; // Envie informações ao cliente PrintWriter PrintWriter = null;/*** Função principal no servidor**/public static void main (String [] args) {// TODO Método Auto-Gerado Stub Stob MyServer ();}/*** O construtor do servidor é usado para inicializar*/public myServer () {*** Jtextarea (); JTextfield = New JTextfield (20); sendButton = new jbutton ("send"); sendButton.addactionListener (isto); sendButton.SetActionCommand ("Send"); JScrollPane = novo JScrollPane (JTexTarea); jpanel = new jpanel (); jpanel.add (jtextfield); // Adicione a caixa de edição jpanel.add (sendButton); // Adicionar botão // Adicione o layout dos dois painéis this.add (jscrollPane, bordayout.center); this.add (jpanel, borderlayout.south); this.SetSize (400.300); this.setTitle ("Chat Server"); this.setDefaultCloseoperation (jframe.exit_on_close); // Defina o botão de saída this.setVisible (true); this.setResizable (true); // a seguir está a construção do servidor de soquete, tente {// O servidor escuta o servidorsocket ss = new ServerSocket (9988); // aguardando o cliente conectar soquete de soquete = ss.accept (); // Obtenha o fluxo de dados enviados pelo cliente BufferReader BR = new BufferredReader (new InputStreamReader (Socket.getInputStream ())); PrintWriter = new PrintWriter (Socket.getOutputStream (), true); // Leia as informações enviadas do cliente while (true) {string info = br.readline (); jtextarea.append ("client"+gettime ()+"/r/n"+info+"/r/n"); }} catch (ioexception e) {// TODO BLOCO DE CAPAGEM AUTOGERATION E.PRINTSTACKTRACE (); }}/*** Usado para obter a hora atual* @return Hora atual*/public String getTime () {// calendar c = calendar.getInstance (); int hora = c.get (calendar.hour_of_day); // obtenha a hora int minuto = c.get (calendário.minute); int segundo = c.get (calendário.second); hora de retorno+":"+minuto+":"+segundo; }/*** Chamado quando o botão é clicado*/@Substituirpublic void ActionPerformed (ActionEvent E) {// TODO Método Geral Goletom Stub // Ligue para (E.GetActionCommand (). Equals ("Send") {// Envie o conteúdo escrito pelo servidor em JTextfield para o cliente String ") jtextarea.append ("server"+gettime ()+"/r/n"+info+"/r/n"); printWriter.println (info); // Envie claramente o conteúdo da caixa jtextfield.settext (""); }}}Cliente
pacote qiu; importar java.awt.borderlayout; importar java.awt.event.actionEvent; importar java.awt.event.actionListener; importar java.io.bufferedredReader; import.Imater.PriMerT; java.net.unknownhosception; importar java.util.calendar; importar javax.swing.jbutton; importar javax.swing.jframe; importar javax.swing.jpanel; importeax.swing.jscrollpane; importinging.wjfield.jteaLeaLeaLeaLeaMeAax.swing.jscrollane; */public class MyClient estende JFrame implementa ActionListener {JTexTarea jtextarea = null; Jtextfield jtextfield = null; Jpanel jpanel = null; JscrollPane jScrollPane = null; Jbutton sendButton = null; PrintWriter printWriter = null;/*** A principal função do cliente**/public static void main (string [] args) {// TODO Method Auto-Gerated Stub new MyClient ();}/*** O construtor do cliente é usado para inicializar**/public () {// GuI Initialization JTartarea JTextfield = New JTextfield (20); sendButton = new jbutton ("send"); sendButton.addactionListener (isto); sendButton.SetActionCommand ("Send"); JScrollPane = novo 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.setResizable (true); // Código de comunicação do soquete Tente {Socket S = new Socket ("127.0.0.1", 9988); BufferErader BR = new BufferredReader (new InputStreamReader (s.getInputStream ())); printWriter = new PrintWriter (s.getOutputStream (), true); while (true) {// leia continuamente as informações enviadas pelo servidor String string = Br.readline (); jtextarea.append ("server"+gettime ()+"/r/n"+string+"/r/n"); }} Catch (desconhecidoHosTexception e) {// TODO BLOCO DE CATAGEM AUTOGERATION E.PRINTSTACKTRACE (); } catch (ioexception e) {// TODO GATO GENERADO AUTOMENTADO BLOCO E.PRINTSTACKTRACE (); }}/*** Usado para obter a hora atual* @return Hora atual*/public String getTime () {// Cada domínio de tempo individual pode ser modificado calendário c = calendar.getInstance (); int hora = c.get (calendar.hour_of_day); // obtenha a hora int minuto = c.get (calendário.minute); int segundo = c.get (calendário.second); hora de retorno+":"+minuto+":"+segundo; }/*** Chamado quando o botão é clicado*/@Substituapublic void ActionPerformed (ActionEvent E) {// ToDO Method Method Stub if (sendButton.getActionCommand (). Equals ("Send")) {String Info = JTextField.getText (). // Envie as informações enviadas pelo cliente para o servidor jtextarea.append ("client"+gettime ()+"/r/n"+info+"/r/n"); printWriter.println (info); jtextfield.settext (""); }}} O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.