Java网络编程实践:字符流、Socket、TCP、UDP聊天室示例
以下是一个使用Java编写的简单的聊天室程序,使用了字符流和字符流输入/输出方法,以及Socket、TCP和UDP等网络编程概念。
// 服务器端程序
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建服务器Socket,监听指定端口
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println('服务器已启动,等待客户端连接...');
// 等待客户端连接
Socket socket = serverSocket.accept();
System.out.println('客户端已连接');
// 获取输入流,读取客户端发送的消息
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 获取输出流,向客户端发送消息
PrintWriter writer = new PrintWriter(socket.getOutputStream());
// 循环读取客户端发送的消息并回复
String message;
while ((message = reader.readLine()) != null) {
System.out.println('收到客户端消息:' + message);
writer.println('服务器回复:' + message);
writer.flush();
}
// 关闭流和连接
reader.close();
writer.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 客户端程序
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 创建客户端Socket,指定服务器地址和端口
Socket socket = new Socket('localhost', 8888);
System.out.println('已连接服务器');
// 获取输入流,读取服务器发送的消息
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 获取输出流,向服务器发送消息
PrintWriter writer = new PrintWriter(socket.getOutputStream());
// 循环读取用户输入的消息并发送给服务器
BufferedReader userInputReader = new BufferedReader(new InputStreamReader(System.in));
String message;
while ((message = userInputReader.readLine()) != null) {
writer.println(message);
writer.flush();
System.out.println('已发送消息:' + message);
// 读取服务器回复的消息并打印
String response = reader.readLine();
System.out.println('服务器回复:' + response);
}
// 关闭流和连接
userInputReader.close();
reader.close();
writer.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
请注意,这只是一个简单的示例,可能不适用于实际生产环境。在实际应用中,您可能需要处理更多的异常情况,并实现更复杂的功能。此外,还需要注意网络编程中的安全性和性能问题。
希望对您有帮助!
原文地址: http://www.cveoy.top/t/topic/fOQV 著作权归作者所有。请勿转载和采集!