Écrire un programme serveur et client en utilisant le langage Java basé sur Swing et GUI. Nous devons en quelque sorte créer un socket qui va du serveur au client et du client au serveur, et être capable de transmettre une sorte de chaîne. J'espère écrire plus tard une fonction qui effectue plusieurs opérations basées sur la chaîne dans le socket. Pour une raison quelconque, je ne trouve pas d'exemple de code simple montrant comment y parvenir de manière simple. Quelqu'un a-t-il un exemple simple ou peut-il expliquer comment y parvenir ?
En s'appuyant sur cet exemple, voici un simple couplage client-serveur réseau utilisant Swing. Il y a quelques problèmes liés à une synchronisation correcte dont il faut être conscient : L'interface graphique elle-même est construite sur le thread de répartition d'événements à l'aide d'invoqueLater(). De plus, ce code repose sur le fait que append() soit thread-safe. Enfin, j'ai utilisé une astuce pratique tirée de l'article "TextArea Scrolling".
Mise à jour : Dans Java 7, append() n'est plus marqué comme thread-safe ; utilisez EnsureLater() dans display() pour trier les mises à jour.
[Photo : Écho](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 设置
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!