Heim > Java > javaLernprogramm > Wie erstelle ich eine einfache Swing-basierte Java-Client-Server-Anwendung mithilfe von Sockets?

Wie erstelle ich eine einfache Swing-basierte Java-Client-Server-Anwendung mithilfe von Sockets?

Susan Sarandon
Freigeben: 2024-12-25 18:27:19
Original
1007 Leute haben es durchsucht

How to Create a Simple Swing-based Java Client-Server Application Using Sockets?

Nutzung von Sockets im Swing-Applet

Frage

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?

Antwort

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 设置
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage