Maison > Java > javaDidacticiel > Comment puis-je implémenter la communication Socket dans une applet Swing en Java ?

Comment puis-je implémenter la communication Socket dans une applet Swing en Java ?

Mary-Kate Olsen
Libérer: 2025-01-03 04:01:39
original
361 Les gens l'ont consulté

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

Utilisation de la communication Socket dans une applet Swing

En Java, l'utilisation de sockets dans une applet Swing permet la communication entre un serveur et un client sur un réseau . Cela permet aux applications d'échanger des données et de répondre à des commandes spécifiques. Voyons comment procéder.

Configuration des sockets client et serveur

Pour une simple paire client-serveur réseau, commencez par définir l'hôte et le port de communication :

private static final String HOST = "127.0.0.1";
private static final int PORT = 12345;
Copier après la connexion

Le client se connectera au serveur en utilisant la classe Socket, tandis que le serveur acceptera les connexions client en utilisant ServerSocket.

Interface Swing

Créez une interface Swing pour l'interaction utilisateur. Dans cet exemple, nous avons un JFrame avec un JTextField pour la saisie utilisateur, un JTextArea pour afficher la communication et un JButton pour envoyer des données.

Boucle de communication

L'exécution () établit la connexion réseau et entre dans une boucle while. À l'intérieur de la boucle, le serveur attend les connexions client et le client lit les données entrantes. Lorsque les données sont reçues, elles sont affichées dans la JTextArea.

Synchronisation et threading

Les composants Swing doivent être mis à jour sur le fil de répartition d'événement. De plus, la communication socket s’effectue dans un thread distinct. La synchronisation est cruciale pour éviter les conditions de concurrence et garantir un fonctionnement correct.

Exemple de code

Le code suivant illustre une simple paire client-serveur avec communication socket en 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;
        // ...
    }
}
Copier après la connexion

Conclusion

L'utilisation de sockets dans une applet Swing permet communication en temps réel entre clients et serveurs. En adhérant aux directives de synchronisation et en utilisant des threads distincts pour les opérations réseau, les développeurs peuvent intégrer efficacement la communication socket dans leurs applications graphiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal