Dieser Artikel beschreibt die Implementierung des Socket -Chatraums basierend auf dem TCP -Protokoll in der Java -Programmierung. Teilen Sie es für Ihre Referenz wie folgt weiter:
Hier werden Socket -Sockel für die Programmierung verwendet, die die doppelte Kommunikation zwischen dem Server und dem Client basierend auf TCP zuverlässiger Service erreichen.
Server -Server -Seite:
Paket com.han; import Java.awt.Container; Import Java.awt.event.ActionEvent; Import Java.awt.event.ActionListener; Import Java.awt.event.windowadapter; Import Java.awt.Event.WindoweVent; javax.swing.jscrollpane; import javax.swing.jtextarea; import javax.swing.jtextfield;/*** Dieses Programm implementiert den Serverprogrammierungsteil eines TCP -Programms. * Die Programmierung mit Socket -Steckdosen wird durchgeführt, um die doppelte Kommunikation mit dem Kunden basierend auf TCP -zuverlässiger Dienst zu erreichen. * Siehe den Client -Class -Client in diesem Paket zum Programmieren * @Author Han * */ @unterdrücktewarnings ("Serial") Der öffentliche Klassenserver erweitert JDIALOG {private BufferedReader -Reader; privater Prinkerschreiber; privater Serversocket -Server; private Socket Socket; private jTextArea ta = new JtextArea (); private JScrollpane sp = new Jscrollpane (TA); private jTextfield tf = new JTextField (); Container CC; öffentlicher Server (String -Titel) {settitle (title); addwindowlistener (neuer windowAdapter () {public void windowsClosing (windowEvent WE) {dispose (); // Alle verwandten Ressourcen im Zusammenhang mit Dialogsystemen revokieren. cc = getContentPane (); setLayout (null); ta.setLineWrap (true); ta.SeTedEditable (falsch); sp.setBounds (0,0,300.342); tf.setBounds (0,342,300,25); cc.add (sp); cc.add (tf); tf.addactionListener (new actionListener () {public void actionPerformed (actionEvent e) {try {writer = neuer printwriter (socket.getOutputStream ();} catch (ioException e1) {// todo auto-generated block e1.printstacktrace ();} writer ta.Append ("user1:"+tf.getText ()+'/n'); } void getServer () {try {Server = new ServerSocket (8998); ta.Append ("Server -Socket wurde erfolgreich/n" erstellt "); while (true) {ta.Append ("Warten auf Clientverbindung/n"); socket = server.accept (); Ta.Append ("Client Connected/n"); Reader = neuer BufferedReader (neuer InputStreamReader (Socket.getInputStream ())); getClientMessage (); }} catch (Ausnahme e) {e.printstacktrace (); }} private void getClientMessage () {try {while (true) {string news = reader.readline (); if (news! = null) {ta.append ("user2:"+news+"/n"); } else {ta.Append ("user2 (client) disconnected/n"); brechen; }}} catch (ioException e) {// Todo automatisch generierter Block e.printstacktrace (); } try {if (reader! = null) {reader.close (); }} catch (ioException e) {// Todo automatisch generierter Fangblock E. printstacktrace (); } if (socket! = null) {try {socket.close (); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); }}} public static void main (String [] args) {Server user1 = neuer Server ("user1"); user1.SetBounds (0,0,300.400); user1.setResizable (false); user1.setvisible (true); user1.getServer (); }}Client Client:
Paket com.han; import Java.awt.*; import Java.awt.event.*; import Java.io. * Die Programmierung mit Socket -Steckdosen wird durchgeführt, um eine doppelte Kommunikation mit dem Server basierend auf TCP zuverlässig zu erreichen. * Siehe die Serverklasse in diesem Paket zum Programmieren des Servers * Es kann auf verschiedenen Plattformen und Maschinen ausgeführt werden. Die im Code geschriebene IP -Adresse muss jedoch an die IP -Adresse des Computers geändert werden, das den Server -Programmserver ausführt. * @Author Han * */ @unterdrücktwarnings ("Serial") Public Class Client erweitert JDIALOG {private BufferedReader -Leser; privater Prinkerschreiber; private Socket Socket; private jTextArea ta = new JtextArea (); private JScrollpane sp = new Jscrollpane (TA); private jTextfield tf = new JTextField (); Container CC; public client (String title) {settitle (title); addwindowlistener (neuer windowAdapter () {public void windowsClosing (windowEvent WE) {dispose (); // Alle verwandten Ressourcen im Zusammenhang mit Dialogsystemen revokieren. cc = getContentPane (); setLayout (null); ta.setLineWrap (true); ta.SeTedEditable (falsch); sp.setBounds (0,0,300.342); tf.setBounds (0,342,300,25); cc.add (sp); cc.add (tf); tf.addactionListener (new actionListener () {public void actionPerformed (actionEvent e) {writer.println (tf.getText ()); ta.Append ("user2:"+tf.GIETTEXT ()+'/n'); tf.setText (");}}); } private void Connect () {ta.Append ("Versuchen Sie zu verbinden/n"); try {socket = new Socket ("192.168.1.3", 8998); } catch (unbekannteHostException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } try {writer = neuer printwriter (socket.getOutputStream (), true); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } ta.Append ("Vervollständigen Sie die Verbindung/n"); } private void getClientMessage () {try {reader = new bufferedReader (neuer InputStreamReader (socket.getInputStream ()); while (true) {string news = reader.readline (); if (news! = null) {ta.append ("user1:"+news+"/n"); } else {ta.Append ("User1 (Server) wurde getrennt und wenn der Server wieder in Verbindung gebracht wird, starten Sie User2 (Client) für Kommunikation/n"); brechen; }}} catch (ioException e) {// Todo automatisch generierter Block Ta.Append ("Benutzer1 (Server) für Kommunikation/n"); E. printstacktrace (); } try {if (reader! = null) {reader.close (); }} catch (ioException e) {// Todo automatisch generierter Fangblock E. printstacktrace (); } if (socket! = null) {try {socket.close (); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); }}} public static void main (String [] args) {client user2 = new client ("user2"); user2.setBounds (0,0,300.400); user2.setVisible (true); user2.setResizable (false); user2.Connect (); user2.GetClientMessage (); }}Weitere Informationen zu Java -verwandten Inhalten finden Sie in den Themen dieser Website: "Zusammenfassung der Java -Socket -Programmierkenntnisse", "Zusammenfassung der Java -Datei- und Verzeichnisbetriebsfähigkeiten", "Tutorial über Java -Datenstruktur und Algorithmus", "Zusammenfassung der Java -Operation DOM -Knotenkompetenz" und "Zusammenfassung der Fähigkeiten der Java -Operation", "Zusammenfassung der Fähigkeiten der Java -Operation" "Zusammenfassung der Fähigkeiten der Java -Operation" und "Zusammenfassung der Fähigkeiten der Java -Operation" "
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.