怎么做网站转盘,东莞保安公司一览表,优秀的网站建设价格,免费的网络软件小编典典基于此示例#xff0c;这是一个使用Swing的简单网络客户端/服务器对。请注意与正确同步有关的一些问题#xff1a;GUI本身是使用事件分配线程构建的invokeLater()。此外#xff0c;代码还依赖的线程安全性append()。最后#xff0c;它结合了文章Text Area Scrollin…小编典典基于此示例这是一个使用Swing的简单网络客户端/服务器对。请注意与正确同步有关的一些问题GUI本身是使用事件分配线程构建的invokeLater()。此外代码还依赖的线程安全性append()。最后它结合了文章Text Area Scrolling中的一个方便提示。更新在Java 7中append()不再标记为线程安全invokeLater()用于display()序列更新。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;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;f.setTitle(Echo kind);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.getRootPane().setDefaultButton(send);f.add(tf, BorderLayout.NORTH);f.add(new JScrollPane(ta), BorderLayout.CENTER);f.add(send, BorderLayout.SOUTH);f.setLocation(kind.offset, 300);f.pack();send.addActionListener(this);ta.setLineWrap(true);ta.setWrapStyleWord(true);DefaultCaret caret (DefaultCaret) ta.getCaret();caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);display(kind.activity HOST on port PORT);thread new Thread(this, kind.toString());}public void start() {f.setVisible(true);thread.start();}//Overridepublic void actionPerformed(ActionEvent ae) {String s tf.getText();if (out ! null) {out.println(s);}display(s);tf.setText();}//Overridepublic void run() {try {Socket socket;if (kind Kind.Client) {socket new Socket(HOST, PORT);} else {ServerSocket ss new ServerSocket(PORT);socket ss.accept();}in new Scanner(socket.getInputStream());out new PrintWriter(socket.getOutputStream(), true);display(Connected);while (true) {display(in.nextLine());}} catch (Exception e) {display(e.getMessage());e.printStackTrace(System.err);}}private void display(final String s) {EventQueue.invokeLater(new Runnable() {//Overridepublic void run() {ta.append(s \u23CE\n);}});}public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {//Overridepublic void run() {new Echo(Kind.Server).start();new Echo(Kind.Client).start();}});}}2020-02-26