Heim >Java >javaLernprogramm >Wie erstelle ich eine einfache Swing-basierte Java-Client-Server-Anwendung mithilfe von Sockets?
Schreiben Sie ein Server- und Clientprogramm mit Java-Sprache basierend auf Swing und GUI. Wir müssen irgendwie einen Socket erstellen, der vom Server zum Client und vom Client zum Server führt, und in der Lage sein, eine Art Zeichenfolge zu übergeben. Ich hoffe, später eine Funktion schreiben zu können, die mehrere Operationen basierend auf der Zeichenfolge im Socket ausführt. Aus irgendeinem Grund kann ich kein einfaches Codebeispiel finden, das zeigt, wie man dies auf einfache Weise erreicht. Hat jemand ein einfaches Beispiel oder kann erklären, wie man das erreicht?
Aufbauend auf diesem Beispiel ist hier eine einfache Netzwerk-Client-Server-Kopplung mit Swing. Es gibt einige Probleme im Zusammenhang mit der korrekten Synchronisierung, die Sie beachten sollten: Die GUI selbst basiert auf dem Event-Dispatch-Thread mithilfe von invokeLater(). Darüber hinaus ist dieser Code darauf angewiesen, dass append() Thread-sicher ist. Abschließend habe ich einen praktischen Tipp aus dem Artikel „TextArea Scrolling“ verwendet.
Update: In Java 7 ist append() nicht mehr als threadsicher markiert; verwenden Sie invokeLater() in display(), um Updates zu sortieren.
[Bild: Echo](https://i.sstatic.net/W32IY.png)
package net; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.Scanner; import javax.swing.*; import javax.swing.text.DefaultCaret; /** * A simple network client-server pair * @http://stackoverflow.com/questions/3245805 */ public class Echo implements ActionListener, Runnable { // 常量 private static final String HOST = "127.0.0.1"; private static final int PORT = 12345; // GUI 组件 private final JFrame f = new JFrame(); private final JTextField tf = new JTextField(25); private final JTextArea ta = new JTextArea(15, 25); private final JButton send = new JButton("Send"); // 网络变量 private volatile PrintWriter out; private Scanner in; private Thread thread; // 类型枚举 private Kind kind; public static enum Kind { Client(100, "Trying"), Server(500, "Awaiting"); private int offset; private String activity; private Kind(int offset, String activity) { this.offset = offset; this.activity = activity; } } public Echo(Kind kind) { this.kind = kind; // GUI 设置
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine einfache Swing-basierte Java-Client-Server-Anwendung mithilfe von Sockets?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!