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;
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; // ... } }
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!