Java 简单聊天室示例代码 - 服务器端实现
下面是一个用 Java 编写的简单聊天室的示例代码,实现了服务器端的功能:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class ChatRoomServer {
private static List<Socket> clients = new ArrayList<>();
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println('Server started on port 8080');
while (true) {
Socket clientSocket = serverSocket.accept();
clients.add(clientSocket);
ClientHandler clientHandler = new ClientHandler(clientSocket);
new Thread(clientHandler).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static class ClientHandler implements Runnable {
private Socket clientSocket;
private BufferedReader reader;
private PrintWriter writer;
public ClientHandler(Socket clientSocket) {
try {
this.clientSocket = clientSocket;
this.reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
this.writer = new PrintWriter(clientSocket.getOutputStream(), true);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
try {
String message;
while ((message = reader.readLine()) != null) {
System.out.println('Received message: ' + message);
// 广播消息给所有连接的客户端
for (Socket client : clients) {
PrintWriter clientWriter = new PrintWriter(client.getOutputStream(), true);
clientWriter.println(message);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这个示例代码实现了一个简单的聊天室服务器端。它使用 ServerSocket 监听 8080 端口,当有新的客户端连接时,会将客户端的 Socket 对象添加到 clients 列表中,并创建一个新的线程处理该客户端的消息。
每个客户端连接都有一个独立的 ClientHandler 线程来处理。它在 run 方法中不断读取客户端发送的消息,并将消息广播给所有连接到服务器的客户端。
可以使用 Telnet 或其他 Socket 客户端工具连接到该服务器,并发送消息进行聊天。
原文地址: https://www.cveoy.top/t/topic/hnX 著作权归作者所有。请勿转载和采集!