package Client;import javaxswing;import javaio;import javanetServerSocket;import javanetSocket;import javautilArrayList;服务器类用于处理最初的PortWaiter的创建任务以及向客户端发送消息。class Client extends Thread Socket serve
package Client;
import javax.swing.; import java.io.; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList;
// 服务器类,用于处理最初的PortWaiter的创建任务以及向客户端发送消息。 class Client extends Thread{ Socket server; // 与服务器端的连接套接字 JTextArea messageArea; // 用于显示消息的文本区域 BufferedReader br; // 用于从服务器端接收消息的缓冲读取器 BufferedWriter bw; // 用于向服务器端发送消息的缓冲写入器 InputStream is; // 服务器端的输入流 OutputStream os; // 服务器端的输出流 int port; // 服务器端监听的端口号 String address; // 服务器端的IP地址
// 构造函数,初始化端口号、消息区域和服务器地址,并启动线程
Client(int port, JTextArea msgArea, String address) {
this.port = port;
this.messageArea = msgArea;
this.address = address;
this.start();
}
// 线程运行的方法
@Override
public void run() {
super.run();
try {
server = new Socket(address, port); // 连接到服务器
messageArea.append("- 已连接到主机 " + server.getInetAddress().getLocalHost() + "\n"); // 显示连接成功的消息
is = server.getInputStream(); // 获取服务器端的输入流
os = server.getOutputStream(); // 获取服务器端的输出流
br = new BufferedReader(new InputStreamReader(is)); // 初始化缓冲读取器
bw = new BufferedWriter(new OutputStreamWriter(os)); // 初始化缓冲写入器
while(true) {
String newMsg = br.readLine(); // 从服务器端读取新消息
if (newMsg != null) {
messageArea.append(">> " + newMsg + "\n"); // 显示新消息
}
}
} catch (IOException e) {
e.printStackTrace();
if(e instanceof java.net.ConnectException)
messageArea.append("- 无法连接到主机,请重试或检查地址和端口。" + "\n"); // 显示连接失败的消息
else
messageArea.append("- 与远程主机的连接已断开。\n"); // 显示连接断开的消息
}
}
// 向服务器端发送消息的方法
public void sendMsg(String msg) {
System.out.println("sendMsg");
try {
bw.write(msg + "\n"); // 发送消息
bw.flush();
messageArea.append("<< " + msg + "\n"); // 显示发送的消息
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 添加注释完成
原文地址: https://www.cveoy.top/t/topic/hBxI 著作权归作者所有。请勿转载和采集!