首頁 > Java > java教程 > 如何在 Java 中的 Swing Applet 中實作 Socket 通訊?

如何在 Java 中的 Swing Applet 中實作 Socket 通訊?

Mary-Kate Olsen
發布: 2025-01-03 04:01:39
原創
355 人瀏覽過

How Can I Implement Socket Communication within a Swing Applet in Java?

在Swing Applet 使用套接字通訊

在Java 中,利用Swing Applet 中的套接字可以透過網路在伺服器和客戶端之間進行通訊。這允許應用程式交換資料並回應特定命令。讓我們深入了解它是如何完成的。

客戶端和伺服器套接字設定

對於簡單的網路客戶端-伺服器對,首先定義用於通訊的主機和連接埠:

private static final String HOST = "127.0.0.1";
private static final int PORT = 12345;
登入後複製

客戶端將使用Socket 類別連接到伺服器,而伺服器將使用Socket類別接受客戶端連線ServerSocket.

Swing 介面

建立一個用於使用者互動的 Swing 介面。在此範例中,我們有一個 JFrame,其中包含用於使用者輸入的 JTextField、用於顯示通訊的 JTextArea 以及用於發送資料的 JButton。

通訊循環

運行() 方法建立網路連線並進入 while 迴圈。在循環內,伺服器等待客戶端連接,客戶端讀取傳入資料。接收到資料後,它會顯示在 JTextArea 中。

同步和執行緒

必須在事件調度執行緒上更新 Swing 元件。此外,套接字通訊發生在單獨的執行緒中。同步對於避免競爭條件和確保正確操作至關重要。

範例程式碼

以下程式碼示範了Java 中使用套接字通訊的簡單客戶端-伺服器對:

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;

public class Echo implements ActionListener, Runnable {

    // Define client and server settings
    private static final String HOST = "127.0.0.1";
    private static final int PORT = 12345;

    // Initialize Swing components
    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");

    // Socket and I/O streams
    private volatile PrintWriter out;
    private Scanner in;

    // Thread for network communication
    private Thread thread;

    // Main method
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Echo(Kind.Server).start();
                new Echo(Kind.Client).start();
            }
        });
    }

    // Constructor
    public Echo(Kind kind) {
        // ...
    }

    // Action listener for the "Send" button
    @Override
    public void actionPerformed(ActionEvent ae) {
        String s = tf.getText();
        // ...
    }

    // Thread to handle network communication
    @Override
    public void run() {
        try {
            // ...
        } catch (Exception e) {
            // ...
        }
    }

    // Display text in the text area
    private void display(final String s) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                ta.append(s + "\u23CE\n");
            }
        });
    }

    // Enum representing client and server types
    public static enum Kind {
        Client(100, "Trying"), Server(500, "Awaiting");
        private int offset;
        private String activity;
        // ...
    }
}
登入後複製

結論

使用Swing小程式中的套接字允許客戶端和伺服器之間進行即時通訊。透過遵守同步準則並使用單獨的執行緒進行網路操作,開發人員可以有效地將套接字通訊整合到其圖形應用程式中。

以上是如何在 Java 中的 Swing Applet 中實作 Socket 通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板