ホームページ >Java >&#&チュートリアル >ソケットを使用して単純な Swing ベースの Java クライアント/サーバー アプリケーションを作成する方法

ソケットを使用して単純な Swing ベースの Java クライアント/サーバー アプリケーションを作成する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-25 18:27:191003ブラウズ

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

Swing アプレットでのソケットの利用

質問

Swing と GUI をベースにした Java 言語を使用してサーバーとクライアントのプログラムを作成します。サーバーからクライアント、およびクライアントからサーバーに向かうソケットを何らかの方法で作成し、何らかの文字列を渡すことができるようにする必要があります。後で、ソケット内の文字列に基づいて複数の操作を実行する関数を作成したいと考えています。何らかの理由で、これを簡単な方法で実現する方法を示す簡単なコード例が見つかりません。誰かが簡単な例を持っているか、これを達成する方法を説明できる人はいますか?

回答

この例に基づいて、Swing を使用した単純なネットワーク クライアントとサーバーのペアリングを示します。正しい同期に関して注意すべき問題がいくつかあります。 GUI 自体は、invokeLater() を使用するイベント ディスパッチ スレッド上に構築されています。さらに、このコードは append() がスレッドセーフであることに依存しています。最後に、記事「TextArea Scrolling」の便利なヒントを使用しました。

更新: Java 7 では、append() はスレッドセーフとしてマークされなくなりました。更新をソートするには、display() の invokeLater() を使用します。

[写真:エコー](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 设置

以上がソケットを使用して単純な Swing ベースの Java クライアント/サーバー アプリケーションを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。