Artikel ini menjelaskan implementasi ruang obrolan soket berdasarkan protokol TCP dalam pemrograman Java. Bagikan untuk referensi Anda, sebagai berikut:
Di sini, soket soket digunakan untuk pemrograman, yang mencapai komunikasi ganda antara server dan klien berdasarkan layanan yang andal TCP.
Sisi Server Server:
Paket com.han; impor java.awt.container; impor java.awt.event.actionevent; impor java.awt.event.actionlistener; import java.awt.event.windowapter; impor java.awt.windowevent; impor java.io.*; javax.swing.jscrollpane; import javax.swing.jtextarea; import javax.swing.jtextfield;/*** Program ini mengimplementasikan bagian pemrograman server dari program TCP. * Pemrograman menggunakan soket soket dilakukan untuk mencapai komunikasi ganda dengan klien berdasarkan layanan yang andal TCP. * Lihat klien kelas klien dalam paket ini untuk pemrograman * @Author Han * */ @SuppressWarnings ("Serial") Server kelas publik memperluas jDialog {pembaca private buferedReader; penulis printwriter pribadi; server server pribadi; soket soket pribadi; Private JTextArea ta = new jTextArea (); private jscrollpane sp = new jscrollpane (ta); Private JTextField TF = new jTextField (); Wadah CC; server publik (judul string) {settitle (title); addWindowlistener (windowAdapter baru () {public void windowclosing (windowevent we) {dispose (); // mencabut semua sumber daya terkait yang terkait dengan dialog System.exit (0); // Keluar dari program biasanya}}); cc = getContentPane (); setLayout (null); ta.setlinewrap (true); ta.seteditable (false); sp.setbounds (0,0,300,342); tf.setbounds (0,342.300,25); CC.Add (SP); CC.Add (TF); new new ActionListener () {public void actionPerformed (ActionEvent e) {try {writer = new printwriter (socket.getoutputStream (), true);} catch (ioException e1) {// todo auto-generated catch block e1.printsception (); writert (writlex. ta.append ("user1:"+tf.getText ()+'/n'); } void getServer () {coba {server = server baru (8998); Ta.Append ("Soket Server telah berhasil dibuat/n"); while (true) {ta.append ("menunggu koneksi klien/n"); socket = server.accept (); Ta.Append ("Client Connected/N"); pembaca = BufferedReader baru (inputStreamReader baru (socket.getInputStream ())); getClientMessage (); }} catch (Exception e) {e.printstacktrace (); }} private void getClientMessage () {coba {while (true) {string news = reader.readline (); if (news! = null) {ta.append ("user2:"+news+"/n"); } else {ta.append ("user2 (klien) terputus/n"); merusak; }}} catch (ioException e) {// todo auto-generated catch block e.printstacktrace (); } coba {if (reader! = null) {reader.close (); }} catch (ioException e) {// TODO AUTO-EME-GOYATED Catch Block E.PrintStackTrace (); } if (socket! = null) {coba {socket.close (); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); }}} public static void main (string [] args) {server user1 = server baru ("user1"); user1.setbounds (0,0,300,400); user1.setriSizable (false); user1.setVisible (true); user1.getServer (); }}Klien Klien:
paket com.han; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import javax.swing.*;/***Program ini mengimplementasikan bagian pemrograman klien dari program TCP. * Pemrograman menggunakan soket soket dilakukan untuk mencapai komunikasi ganda dengan server berdasarkan layanan yang andal TCP. * Lihat kelas server dalam paket ini untuk pemrograman server * dapat dijalankan pada platform yang berbeda dan mesin yang berbeda, tetapi alamat IP yang ditulis dalam kode harus dimodifikasi ke alamat IP mesin yang menjalankan server program server. * @Author Han * */ @SuppressWarnings ("Serial") Klien Kelas Publik Memperluas JDialog {Private BufferedReader Reader; penulis printwriter pribadi; soket soket pribadi; Private JTextArea ta = new jTextArea (); private jscrollpane sp = new jscrollpane (ta); Private JTextField TF = new jTextField (); Wadah CC; klien publik (judul string) {settitle (judul); addWindowlistener (windowAdapter baru () {public void windowclosing (windowevent we) {dispose (); // mencabut semua sumber daya terkait yang terkait dengan dialog System.exit (0); // Keluar dari program biasanya}}); cc = getContentPane (); setLayout (null); ta.setlinewrap (true); ta.seteditable (false); sp.setbounds (0,0,300,342); tf.setbounds (0,342.300,25); CC.Add (SP); CC.Add (TF); tf.addactionListener (actionListener () {public void actionPerformed (actionEvent e) {writer.println (tf.getText ()); ta.append ("user2:"+tf.getText ()+'/n'); tf.setext ("");}); } private void connect () {ta.append ("Coba hubungkan/n"); coba {socket = soket baru ("192.168.1.3", 8998); } catch (UnknownHostException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); } coba {writer = printwriter baru (socket.getoutputStream (), true); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); } ta.append ("Lengkapi koneksi/n"); } private void getClientMessage () {try {reader = new buferedReader (inputStreamReader baru (socket.getInputStream ())); while (true) {string news = reader.readline (); if (news! = null) {ta.append ("user1:"+news+"/n"); } else {ta.append ("user1 (server) telah terputus, dan ketika server dihubungkan kembali, restart user2 (klien) untuk komunikasi/n"); merusak; }}} catch (ioException e) {// TODO Auto-dibuat blok tangkapan ta.append ("user1 (server) untuk komunikasi/n"); e.printstacktrace (); } coba {if (reader! = null) {reader.close (); }} catch (ioException e) {// TODO AUTO-EME-GOYATED Catch Block E.PrintStackTrace (); } if (socket! = null) {coba {socket.close (); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); }}} public static void main (string [] args) {client user2 = klien baru ("user2"); user2.setbounds (0,0,300,400); user2.setVisible (true); user2.setriSizable (false); user2.connect (); user2.getClientMessage (); }}For more information about Java related content, please check out the topics of this site: "Summary of Java Socket Programming Skills", "Summary of Java File and Directory Operation Skills", "Tutorial on Java Data Structure and Algorithm", "Summary of Java Operation DOM Node Skills" and "Summary of Java Cache Operation Skills"
Saya harap artikel ini akan membantu pemrograman Java semua orang.