java编程_socket_套接字_网络编程_简易的GUI多线程聊天程序
运行效果:服务器端代码:
1 package com.b510.socket1706.gui.freeechatroom;
2
3 import java.io.*;
4 import java.net.*;
5 import java.awt.*;
6 import java.awt.event.*;
7
8 /**
9 * 服务器端程序
10 *
11 * @author Hongten
12 *
13 * @time 2012-4-29 2012
14 */
15 public class TestServer {
16 private ServerSocket ss;
17 private Socket s;
18 private DataInputStream dis;
19 private DataOutputStream dos;
20 private TextArea ta;
21 private TextField tf;
22
23 public static void main(String args[]) {
24 TestServer ts = new TestServer();
25 ts.createUI();
26 ts.connect();
27 ts.createThread();
28 }
29
30 public void connect() {
31 try {
32 ss = new ServerSocket(8888);
33 s = ss.accept();
34 dis = new DataInputStream(s.getInputStream());
35 dos = new DataOutputStream(s.getOutputStream());
36 } catch (IOException e) {
37 e.printStackTrace();
38 // 13701303436
39
40 }
41 }
42
43 public void createUI() {
44 Frame f = new Frame("Server");
45 ta = new TextArea();
46 tf = new TextField();
47 Button send = new Button("send");
48 Panel p = new Panel();
49 p.setLayout(new BorderLayout());
50 p.add(tf, "Center");
51 p.add(send, "East");
52 f.add(ta, "Center");
53 f.add(p, "South");
54 MyServerListener listener = new MyServerListener(this);
55 send.addActionListener(listener);
56 tf.addActionListener(listener);
57 f.addWindowListener(new WindowAdapter() {
58 public void windowClosing(WindowEvent e) {
59 System.exit(0);
60 }
61 });
62 f.setSize(400, 400);
63 f.setVisible(true);
64 }
65
66 public void createThread() {
67 MyServerReader reader = new MyServerReader(this);
68 reader.start();
69 }
70
71 public void close() {
72 try {
73 dis.close();
74 dos.close();
75 s.close();
76 ss.close();
77 } catch (IOException e) {
78 e.printStackTrace();
79 }
80 }
81
82 public DataInputStream getDataInputStream() {
83 return dis;
84 }
85
86 public DataOutputStream getDataOutputStream() {
87 return dos;
88 }
89
90 public TextArea getTextArea() {
91 return ta;
92 }
93
94 public TextField getTextField() {
95 return tf;
96 }
97 }
98
99 class MyServerListener implements ActionListener {
100 private TestServer server;
101
102 public MyServerListener(TestServer server) {
103 this.server = server;
104 }
105
106 public void actionPerformed(ActionEvent e) {
107 TextField tf = server.getTextField();
108 String info = tf.getText();
109 server.getTextArea().append("自己说: " + info + "\n");
110 try {
111 server.getDataOutputStream().writeUTF(info);
112 } catch (IOException e1) {
113 e1.printStackTrace();
114 }
115 if (info.equals("bye")) {
116 server.clos
补充:软件开发 , Java ,