相关网络编程前两篇文章:Java程序设计:Java网络编程实验
服务端部分见上一篇文章:Java程序设计:Java网络聊天室服务端
目录
1 实验名称
2 实验目的
3 实验源代码
4 实验运行结果图
5 总结
1 实验名称
Java 网络聊天室客户端
2 实验目的
继续熟练掌握在eclipse中调试代码
掌握Java面向对象思想掌握多线程在该项目中的使用
掌握GUI编程在该项目中的使用
掌握IO在该项目中的使用
掌握多线程在该项目中的使用
掌握Java 网络编程在该项目中的使用
掌握TCP协议和Socket套接字编程在该项目中的使用
3 实验源代码
package Text01.NetworkProgrammingText;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Client {
private String hostname; // 服务器地址
private int port; // 服务器端口
private String clientName; // 客户端名称
public Client(String hostname, int port, String clientName) {
this.hostname = hostname;
this.port = port;
this.clientName = clientName;
}
public void start() {
try {
Socket socket = new Socket(hostname, port); // 连接服务器
System.out.println("连接服务器成功!");
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 输入流,用于读取服务器发送的消息
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); // 输出流,用于向服务器发送消息
output.write(clientName + "\n"); // 输入客户端名称
output.flush();
Thread readThread = new Thread(new Runnable() { // 创建新线程用于读取服务器发送的消息
@Override
public void run() {
try {
String message;
while ((message = input.readLine()) != null) { // 循环读取服务器发送的消息并在控制台上显示
System.out.println(message);
}
} catch (IOException e) {
System.out.println("读取服务器消息失败: " + e.getMessage());
}
}
});
readThread.start(); // 启动新线程
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); // 控制台输入流
String message = "";
while (!message.equals("bye")) { // 循环读取用户控制台输入并发送给服务器
message = reader.readLine();
output.write(clientName + ": " + message + "\n");
output.flush();
}
readThread.interrupt(); // 中断新线程
input.close(); // 关闭输入流、输出流和socket连接
output.close();
socket.close();
} catch (IOException e) {
System.out.println("连接服务器失败: " + e.getMessage());
}
}
public static void main(String[] args) {
String hostname = "127.0.0.1"; // 获取服务器地址
int port = Integer.parseInt("8080"); // 获取服务器端口号
String clientName = "8000"; // 获取客户端名称
Client client = new Client(hostname, port, clientName); // 创建客户端对象
client.start(); // 启动客户端
}
}
4 实验运行结果图
5 总结
此次实验通过创建服务器、处理客户端请求、多线程服务器、客户端编程等一系列步骤完成了这次任务。此次实验中,使用ServerSocket类创建了一个简单的服务器,并处理了客户端连接请求;接着使用Socket类处理了客户端发送的消息,并向客户端返回相应消息;然后使用多线程服务器来处理多个客户端的连接请求,实现了并发处理功能;最终也实现了一个简单的客户端程序,并与服务器进行通信。