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 サイトの他の関連記事を参照してください。