Cet article partage un outil de chat simple à socket pour vous, j'espère que vous l'aimez.
Le code s'exécute comme indiqué sur la figure et a l'air plutôt bien
Côté serveur
Package Qiu; Importer java.awt.borderLayout; import java.awt.event.actionEvent; import java.awt.event.actionListener; import java.awt.print.printable; importer java.io.inputstreaDader; import java.io.ioException; importer java.io.inputtreamreader; import java.io.print; import; java.net.serversocket; import java.net.socket; import java.util.calendar; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jpanel; Logiciel de chat simple * * / classe publique MyServer étend JFrame implémente ActionListener {jTextArea jTextArea = null; // zone unique utilisée pour afficher le texte brut jTextField jTextField = null; // il peut être autorisé à modifier le texte à une seule ligne jbutton sendButton = null; Jpanel jpanel = null; Jscrollpane jscrollpane = null; // Envoi des informations à l'objet client Printwriter printwriter = null; / ** * fonction principale sur le serveur * * / public static void main (String [] args) {// TODO Méthode générée automatiquement Stub New MyServer ();} / ** * Le constructeur du serveur, utilisé pour initialiser * * / public myserver () {// est la initialisation de la initialisation du GUI JTextaraearea ();); jTextfield = new JTextField (20); sendButton = new JButton ("Send"); sendButton.addactionListener (this); sendButton.setActionCommand ("Send"); jscrollPane = new JscrollPane (jTextArea); jpanel = new JPanel (); jpanel.add (jTextfield); // ajouter la boîte d'édition jpanel.add (sendButton); // ajouter bouton // ajouter la disposition des deux panneaux this.add (jscrollpane, borderlayout.center); this.add (jpanel, borderlayout.south); this.setSize (400 300); this.setTitle ("Chat Server"); this.setDefaultCloseOperation (jframe.exit_on_close); // Définissez le bouton de sortie this.setVisible (true); this.setResiSable (true); // Ce qui suit est la construction du serveur de socket essaie {// le serveur écoute ServerSocket SS = new Serversocket (9988); // en attente que le client connecte la prise socket = ss.accept (); // Obtenez le flux de données envoyé par le client BufferedReader br = new BufferedReader (new inputStreamReader (socket.getInputStream ())); printwriter = new printwriter (socket.getOutputStream (), true); // Lire les informations envoyées par le client while (true) {String info = br.readline (); jTextArea.Apend ("Client" + getTime () + "/ r / n" + info + "/ r / n"); }} catch (ioException e) {// TODO GÉNÉRATEUR AUTO GÉNÉRÉ BLOC E.PRINTSTACKTRACE (); }} / ** * Utilisé pour obtenir l'heure actuelle * @return Time actuel * / public String getTime () {// Calendar C = calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // obtenez l'heure intwe minute = c.get (calendar.Minute); int seconde = c.get (calendar.second); Hour de retour + ":" + minute + ":" + seconde; } / ** * Appelé lorsque le bouton est cliqué * / @ OverRidepublic void ActionPerformed (ActionEvent E) {// TODO GÉNÉRÉ AUTO GÉNÉRÉ Stub // Appel if (e.getActionCommand (). Equals ("Send")) {// Envoyer le contenu écrit par le serveur dans JTextField à la chaîne du client Info = JTextField.Gettext (); jTextArea.Apend ("Server" + getTime () + "/ r / n" + info + "/ r / n"); printwriter.println (info); // Envoi clairement le contenu de la boîte jTextfield.seTText (""); }}}Client
Package Qiu; import java.awt.borderLayout; import java.awt.event.actionEvent; import java.awt.event.actionListener; import java.io.bufferedreader; import java.io.ioexception; 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; classe MyClient étend JFrame implémente ActionListener {jTextArea jTextArea = null; JTextfield jTextfield = null; Jpanel jpanel = null; Jscrollpane jscrollpane = null; JBUTTON SendButton = NULL; Printwriter printwriter = null; / ** * La fonction principale du client * * / public static void main (String [] args) {// TODO Méthode générée auto-générée Stub new MyClient ();} / ** * Le constructeur client est utilisé pour initialiser * * / public myClient () {// GUI Initialisation JTextaa = new Jtextara (); 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.setResiSable (true); // Code de communication de socket essaie {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) {// lisez en continu les informations envoyées par la chaîne de serveur String = br.readline (); jTextArea.Apend ("Server" + getTime () + "/ r / n" + chaîne + "/ r / n"); }} catch (UnknownHostException e) {// TODO Block de capture généré automatiquement e.printStackTrace (); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); }} / ** * Utilisé pour obtenir l'heure actuelle * @return Time actuel * / public String getTime () {// Chaque domaine temporel individuel peut être modifié Calendar C = calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // obtenez l'heure intwe minute = c.get (calendar.Minute); int seconde = c.get (calendar.second); Hour de retour + ":" + minute + ":" + seconde; } / ** * Appelé lorsque le bouton est cliqué * / @ OverRidepublic void ActionPerformed (ActionEvent E) {// TODO Méthode générée automatiquement Stub if (sendButton.getActionCommand (). // Envoyez les informations envoyées par le client au serveur jTextArea.Apend ("Client" + GetTime () + "/ R / N" + info + "/ R / N"); printwriter.println (info); jTextfield.seTText (""); }}} Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.