在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中文網其他相關文章!