Artikel ini berbagi alat obrolan sederhana untuk Anda, saya harap Anda menyukainya.
Kode berjalan seperti yang ditunjukkan pada gambar dan terlihat cukup bagus
Sisi server
Paket qiu; impor java.awt.borderlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.print.printable; impor java.iufferedreader; impor java.io.oexception; impor java.bufferedreader; impor java.io.ioException; impor java.bufferedreader; impor java.io.ioException; impor java.bufferedreader; impor java.io.ioException; impor java.inputroader; java.io.printwriter; impor java.net.serversocket; impor java.net.socket; impor java.util.calendar; impor javax.swing.jbutton; impor javax.swing.jframe; impor javax.swing.jpanel; impor javax.swing.jframe; javax.swing.JTextField;/** * Server for simple chat software* */public class MyServer extends JFrame implements ActionListener{ JTextArea jTextArea =null;//Single-line area used to display plain text JTextField jTextField=null;//It can be allowed to edit single-line text JButton sendButton=null; Jpanel jpanel = null; Jscrollpane jscrollpane = null; //Send information to the client object PrintWriter printWriter =null;/** * Main function on the server* */public static void main(String[] args) { // TODO Auto-generated method stub new MyServer();}/** * The constructor of the server, used to initialize* */public MyServer(){ // Here is the initialization of the GUI jTextArea = new JTextArea (); jTextField = JTextField baru (20); sendbutton = jbutton baru ("kirim"); sendbutton.addactionlistener (ini); sendbutton.setactionCommand ("kirim"); jscrollpane = jscrollpane baru (jTextArea); jpanel = jpanel baru (); jpanel.add (jTextfield); // Tambahkan kotak edit jpanel.add (sendbutton); // Tambahkan tombol // Tambahkan tata letak dua panel this.add (jscrollpane, boundlayout.center); this.add (jpanel, borderlayout.south); this.setsize (400.300); this.settitle ("server obrolan"); this.setDefaultCloseOperation (jframe.exit_on_close); // Atur tombol keluar this.setVisible (true); this.setresizable (true); // Berikut ini adalah konstruksi server soket coba {// server mendengarkan server ss = server baru (9988); // menunggu klien untuk menghubungkan soket soket = ss.accept (); // Dapatkan aliran data yang dikirim oleh klien bufferedReader BR = baru buferedReader (inputStreamReader baru (socket.getInputStream ())); printwriter = printwriter baru (socket.getoutputStream (), true); // Baca informasi yang dikirim dari klien while (true) {string info = br.readline (); jTextArea.append ("Client"+getTime ()+"/r/n"+info+"/r/n"); }} catch (ioException e) {// TODO AUTO-EME-GOYATED Catch Block E.PrintStackTrace (); }}/*** Digunakan untuk mendapatkan waktu saat ini* @return waktu saat ini*/getTime string publik () {// Calendar c = calendar.getInstance (); int jam = c.get (calendar.hour_of_day); // Dapatkan jam int menit = c.get (calendar.minute); int kedua = c.get (calendar.second); jam kembali+":"+menit+":"+kedua; }/*** Dipanggil saat tombol diklik*/@overridepublic void actionPerformed (actionEvent e) {// TODO Metode yang dihasilkan secara otomatis // hubungi if (e.getactionCommand (). Equals ("Send") {// Kirim konten yang ditulis oleh server di JTextfield ke klien string info = jtext. jTextArea.append ("server"+getTime ()+"/r/n"+info+"/r/n"); printwriter.println (info); // jelas mengirim konten kotak jTextField.setText (""); }}}Klien
Paket qiu; impor java.awt.borderlayout; impor java.awt.event.actionevent; impor java.awt.event.actionlistener; impor java.io.bufferedreader; impor java.io.ioexception; impor java.io.inputstreamReAder; impor Java. java.net.unknownhostException; import java.util.calendar; impor javax.swing.jbutton; impor javax.swing.jframe; impor javax.swing.jpanel; impor javax.swing.jscrollpane; impor javax.swing.jtextarextlexlexexix. perangkat lunak * */kelas publik myClient memperluas jframe mengimplementasikan ActionListener {jTextArea jTextArea = null; JTextField JTextField = null; Jpanel jpanel = null; Jscrollpane jscrollpane = null; Jbutton sendbutton = null; Printwriter printwriter = null;/*** Fungsi utama klien**/public static void main (string [] args) {// TODO Metode yang dihasilkan secara otomatis Stub baru myClient ();}/*** Konstruktor klien digunakan untuk menginisialisasi*/public myClient () {// guization JtextareAa = New JtextareAre =) {// guizeisasi jtextarea = jtextarea = jtextarea = jtextareea = jtextarea =) {// gUI JtextareAre = JtextareAre =) {// gUI JtextareAre = JTextareAre = Jtextarea = JTextareAre = () {// gUI JTEXTAREA =) jTextField = JTextField baru (20); sendbutton = jbutton baru ("kirim"); sendbutton.addactionlistener (ini); sendbutton.setactionCommand ("kirim"); jscrollpane = jscrollpane baru (jTextArea); jpanel = jpanel baru (); jpanel.add (jTextfield); jpanel.add (sendbutton); this.add (jscrollpane, borderlayout.center); this.add (jpanel, borderlayout.south); this.setsize (400, 300); this.settitle ("klien obrolan"); this.setDefaultCloseOperation (jframe.exit_on_close); this.setVisible (true); this.setresizable (true); // Kode komunikasi soket coba {socket s = socket baru ("127.0.0.1", 9988); BufferedReader BR = BufferedReader baru (inputStreamReader baru (s.getInputStream ())); printwriter = printwriter baru (s.getoutputStream (), true); while (true) {// terus membaca informasi yang dikirim oleh string server string = br.readline (); jTextArea.append ("server"+getTime ()+"/r/n"+string+"/r/n"); }} catch (unknownHostException e) {// todo auto-generated catch block e.printstacktrace (); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); }}/*** Digunakan untuk mendapatkan waktu saat ini* @return waktu saat ini*/getTime string publik () {// Setiap domain waktu individu dapat dimodifikasi kalender c = calendar.getInstance (); int jam = c.get (calendar.hour_of_day); // Dapatkan jam int menit = c.get (calendar.minute); int kedua = c.get (calendar.second); jam kembali+":"+menit+":"+kedua; }/*** Dipanggil saat tombol diklik*/@overridepublic void actionPerformed (actionEvent e) {// todo Metode yang dihasilkan otomatis if (sendbutton.getactionCommand (). Equals ("send") {string info = jTextField.gettext (); // Kirim informasi yang dikirim oleh klien ke server jTextArea.append ("klien"+gettime ()+"/r/n"+info+"/r/n"); printwriter.println (info); jtextfield.setText (""); }}} Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.