Ich habe kürzlich ein Projekt gestartet, bei dem Online -Webkommunikation erforderlich ist. Ich habe schon lange keinen Code nicht geschrieben und bin damit nicht vertraut. Also habe ich zuerst eine Demo geschrieben und geübt und sie auf der Wulin Network -Plattform geteilt, um eine Aufzeichnung zu machen, damit sie mit allen verwendet werden kann.
Lassen Sie mich Ihnen zunächst die Implementierungsschritte mitteilen:
1. Verwenden Sie AWT -Komponente und Socket, um einen einfachen einzelnen Client zu implementieren, um Nachrichten kontinuierlich an den Server zu senden.
2. In Kombination mit Threads verwalten Sie eine mehrstufige Verbindung zum Server, um Nachrichten zu senden.
3. Implementieren Sie die Server -Weiterleitungs -Client -Nachrichten an alle Clients und zeigen Sie sie gleichzeitig im Client an.
4. Ändern Sie die von der AWT-Komponente generierte Fensterschnittstelle in die von Front-End JSP oder HTML angezeigte Schnittstelle und ändern Sie den von Java Socket implementierten Client in die Implementierung der Front-End-Technologie.
Hier implementieren wir zunächst die einfache Funktion des ersten Schritts. Die Schwierigkeit ist:
1. Ich habe die AWT-Komponente noch nie verwendet und habe noch nie Java-bezogene Hörereignisse verwendet.
2. Ich habe seit langem Steckdose keine Steckdosen verwendet, um zwischen dem Client und dem Server zu interagieren, und ich habe die CSS -Struktur nicht wirklich entwickelt.
Der Code zum Implementieren der Funktion lautet wie folgt:
Kunde:
Paketchat.Chat; Import Java.awt.BorderLayout; import Java.awt.frame; import Java.awt.textarea; import Java.awt.textfield; import Java.awt.event.ActionEvent; import Java.awt.event.ActionListener; Import Java.awt.event.Windowadapter; Import Java.awt.event.WindowEvent; importieren java.io.dataoutputStream; importieren java.io.ioException; importieren java.net.socket; Importieren Sie java.net.unnownhostException; / ** * Online -Chat -Client 1. Erstellen Sie den Umriss der grafischen Fensterschnittstelle 2. Fügen Sie der Umrisse ein Schließereignis hinzu. // Inhaltsanzeige private textarea taste = new textarea (); privater Socket Socket = Null; // Datenausgabe Stream Private DataOutputStream DataOutputStream = NULL; public static void main (String [] args) {new chatclient (). Launcframe (); } / ** * Erstellen Sie ein einfaches grafisches Fenster * * @Author: tuzongxun * @title: LauncFrame * @param * @return void * @date 18. Mai 2016 9:57:00 Uhr * @throws * / public void launcframe () {setLocation (300, 200); this.setsize (200, 400); add (tftxt, borderLayout.South); add (tarea, borderLayout.north); Pack(); // Hören Sie sich das Schließereignis des grafischen Schnittstellenfensters an. tftxt.addactionListener (new tflister ()); setvisible (wahr); verbinden(); } / ** * Verbindung zum Server * * * @Author: tuzongxun * @title: connect * @param * @return void * @date 18. Mai 2016 9:56:49 AM * @Throws * / public void Connect () {try {// Erstellen Sie eine neue Serververbindungs -Socket ("127.0.1.1.1", 8888); // Client -Ausgabe -Stream dataOutputStream = new DataOutputStream (socket.getOutputStream ()); System.out.println ("Verbindung zum Server herstellen"); } catch (unbekannteHostException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); }} / ** * Client -Ressourcen schließen * * @Author: tuzongxun * @title: disconnect * @param * @return void * @date 18. Mai 2016 9:57:46 am * @throws * / public void disconnect () {try {DataOutputStream.CLOSE (); socket.close (); } catch (ioException e) {e.printstacktrace (); }} / ** * Senden Sie eine Nachricht an den Server * * @Author: tuzongxun * @title: sendMessage * @param @param text * @return void * @date 18. Mai 2016 9:57:56 AM * @Throws * / private void SendMessage (String text) {try {dataOutputStream.write.write.writef (textf (text); DataOutputStream.flush (); } catch (ioException e1) {e1.printstacktrace (); }} / ** * Grafikfenster Eingabebereich zum Anhören von Wagenrückgabeereignis * * @Author Tuzongxun123 * * / private class Tflister implementiert actionListener {@Override public void actionPerformed (actionEvent e) {String text = tftxt.getText (). Trim (); Taxa.SetText (Text); tftxt.setText (""); // Daten an den Server SendMessage (Text) senden; }}}Server:
Paketchat.Chat; importieren java.io.datainputstream; importieren java.io.eofexception; importieren java.io.ioException; importieren java.net.bindException; importieren java.net.serversocket; importieren java.net.socket; /*** Java verwendet Socket- und AWT -Komponenten, um einfach die Online -Chat -Funktion zu implementieren. Der Server kann erkennen, dass der Server nach dem Anschließen eines Clients* kontinuierlich Nachrichten an den Server senden kann, aber mehrere Clients nicht gleichzeitig dazu beigetragen haben, eine Verbindung herzustellen. Der Grund dafür ist, dass nach der Erfassung der Clientverbindung im Code die Client -Eingänge immer wieder geschleudert werden, sodass der Server einen anderen Client nicht zweimal anhören kann. Wenn Sie es implementieren möchten, müssen Sie Asynchronous oder Multithreads * @Author Tuzongxun123 * */ public Class Chatserver {public static void main (String [] args) {// Ob der Server erfolgreich mit boolean istart = false gestartet werden; // Server Socket ServerSocket SS = NULL; // Client Socket Socket Socket = NULL; // Server lesen Client -Dateneingangsstrom DataNputStream DataNputStream = NULL; Versuchen Sie {// starten Server SS = New ServerSocket (8888); } catch (bindException e) {System.out.println ("Port ist bereits verwendet"); // das Programmsystem schließen.exit (0); } catch (Ausnahme e) {e.printstacktrace (); } try {isStart = true; während (isStart) {boolean isConnect = false; // Starten Sie den Hör -Socket = ss.accept (); System.out.println ("ein Client Connect"); isconnect = true; while (isconnect) {// den Client -Eingangsstrom DataNputStream = new DataNputStream (socket.getInputStream ()) abrufen; // Lesen Sie die von der Client -String -Message = DataNputStream.readutf () übergebenen Daten; System.out.println ("Client sagt:" + meldung); }}} catch (eOfException e) {System.out.println ("Client geschlossen!"); } catch (Ausnahme e) {e.printstacktrace (); } endlich {// Schließen Sie die zugehörige Ressource try {dataNputStream.close (); socket.close (); } catch (ioException e) {e.printstacktrace (); }}}}Das obige ist das relevante Wissen über Java Socket, das eine einfache Online -Chat -Funktion (i) implementiert, die vom Editor eingeführt wird. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!