testclient.java
来自「由浅入深的介绍JAVAse的基本编程思想」· Java 代码 · 共 127 行
JAVA
127 行
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
public class TestClient {
private Socket s;
private DataInputStream dis;
private DataOutputStream dos;
private TextArea ta;
private TextField tf;
public static void main(String args[]) {
TestClient tc = new TestClient();
tc.createUI();
tc.connect();
tc.createThread();
}
public void connect(){
try {
s = new Socket("127.0.0.1",8888);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
}catch (IOException e) {
e.printStackTrace();
}
}
public void createUI(){
Frame f = new Frame("Client");
ta = new TextArea();
tf = new TextField();
Button send = new Button("发送");
Panel p = new Panel();
p.setLayout(new BorderLayout());
p.add(tf,"Center");
p.add(send,"East");
f.add(ta,"Center");
f.add(p,"South");
MyClientListener listener = new MyClientListener(this);
send.addActionListener(listener);
tf.addActionListener(listener);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.setSize(400,400);
f.setLocation(600,0);
f.setVisible(true);
}
public void createThread(){
MyClientReader reader = new MyClientReader(this);
reader.start();
}
public void close(){
try{
dis.close();
dos.close();
s.close();
}catch (IOException e) {
e.printStackTrace();
}
}
public DataInputStream getDataInputStream(){
return dis;
}
public DataOutputStream getDataOutputStream(){
return dos;
}
public TextArea getTextArea(){
return ta;
}
public TextField getTextField(){
return tf;
}
}
class MyClientListener implements ActionListener{
private TestClient client;
public MyClientListener(TestClient client){
this.client = client;
}
public void actionPerformed(ActionEvent e){
TextField tf = client.getTextField();
String info = tf.getText();
client.getTextArea().append("自己说: " + info + "\n");
try{
client.getDataOutputStream().writeUTF(info);
}catch (IOException e1) {
e1.printStackTrace();
}
if(info.equals("bye")){
client.close();
System.exit(0);
}
tf.setText("");
tf.requestFocus();
}
}
class MyClientReader extends Thread{
private TestClient client;
public MyClientReader(TestClient client){
this.client = client;
}
public void run(){
String info;
DataInputStream dis = client.getDataInputStream();
TextArea ta = client.getTextArea();
try{
while(true){
info = dis.readUTF();
ta.append("对方说: " + info + "\n");
if(info.equals("bye")){
client.close();
System.exit(0);
}
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?