ホームページ > Java > &#&チュートリアル > Java の Swing アプレット内にソケット通信を実装するにはどうすればよいですか?

Java の Swing アプレット内にソケット通信を実装するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-03 04:01:39
オリジナル
362 人が閲覧しました

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

Swing アプレットでのソケット通信の使用

Java では、Swing アプレットでソケットを利用すると、ネットワークを介したサーバーとクライアント間の通信が可能になります。 。これにより、アプリケーションはデータを交換し、特定のコマンドに応答できるようになります。その方法を詳しく見てみましょう。

クライアントとサーバーのソケットのセットアップ

単純なネットワークのクライアントとサーバーのペアの場合、通信用のホストとポートを定義することから始めます。

private static final String HOST = "127.0.0.1";
private static final int PORT = 12345;
ログイン後にコピー

クライアントは Socket クラスを使用してサーバーに接続し、サーバーは次を使用してクライアント接続を受け入れます。 ServerSocket.

Swing Interface

ユーザー対話用の Swing インターフェイスを作成します。この例では、ユーザー入力用の JTextField、通信表示用の JTextArea、およびデータ送信用の JButton を備えた JFrame があります。

通信ループ

実行() メソッドはネットワーク接続を確立し、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 アプレット内にソケット通信を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート