📄 chatclient_mashibing.java
字号:
package local;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
public class ChatClient_mashibing extends Frame {
TextField tfTxt = new TextField();
TextArea taContent = new TextArea();
Socket client = null;
PrintStream dos = null;
BufferedReader br = null;
String str = null;
public static void main(String[] args) {
new ChatClient_mashibing().launchFrame();
}
public void launchFrame() {
setLocation(300, 300);
add(tfTxt, BorderLayout.SOUTH);
add(taContent, BorderLayout.NORTH);
addWindowListener(new Wclosing());
tfTxt.addActionListener(new TFListener());
setSize(400, 300);
setVisible(true);
connect(); // 窗口启动后,同时连接上服务器端!!
new RecvMsg().start();
}
/**
* 为连接服务器端建立一个方法
*
*/
public void connect() {
try {
client = new Socket("localhost", 6214);// 必须注意这里的client前面不能定义Socket类型,不然client会变成局部变量,在下面的connect()方法调用时会变成空指针。
dos = new PrintStream(client.getOutputStream());// 当成功链接上服务端后,对dos进行初始化。
br = new BufferedReader(new InputStreamReader(client
.getInputStream()));// 当成功链接上服务端后,对br进行初始化。
System.out.println("Connected");// 测试是否成功连接上服务端
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 为断开服务器建立一个方法,该方法用于清理资源,当点击关闭窗口是调用该方法。
*
*/
public void disConnect() {
try {
dos.close();
br.close();
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
class Wclosing extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
disConnect();// 当退出窗口时调用该方法
System.exit(0);
}
}
private class TFListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String tmp = tfTxt.getText().trim();// trim()去掉空格
// taContent.setText(tmp);
tfTxt.setText("");// 发送完信息后清空
// 进行流操作,将信息发送到服务端
try {
dos.println(tmp);
// dos.flush();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
private class RecvMsg extends Thread {
public void run() {
try {
while ((str = br.readLine()) != null) {
// System.out.println(str);
taContent.setText(taContent.getText() + str + "\n");
}
}catch(SocketException se){
System.out.println("Quit,Bye!!");
}
catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("不能接收广播信息!!!");
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -