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.close();
117 System.exit(0);
118 }
119 tf.setText("");
120 tf.requestFocus();
121 }
122 }
123
124 class MyServerReader extends Thread {
125 private TestServer server;
126
127 public MyServerReader(TestServer server) {
128 this.server = server;
129 }
130
131 public void run() {
132 String info;
133 DataInputStream dis = server.getDataInputStream();
134 TextArea ta = server.getTextArea();
135 try {
136 while (true) {
137 info = dis.readUTF();
138 ta.append("对方说: " + info + "\n");
139 if (info.equals("bye")) {
140 server.close();
141 System.exit(0);
142 }
143 }
144 } catch (IOException e) {
145 e.printStackTrace();
146 }
147 }
148 }