用java写一个可以实现简易聊天室群组播报功能的代码
时间: 2024-02-24 21:57:58 浏览: 62
以下是一个简单的 Java 代码实现聊天室群组播报功能的示例:
```java
import java.io.*;
import java.net.*;
import java.util.*;
public class ChatRoomServer {
private static List<Socket> clients = new ArrayList<>(); // 存储连接到聊天室的客户端 Socket
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888); // 创建服务端的 ServerSocket
// 持续监听新的客户端连接
while (true) {
Socket clientSocket = serverSocket.accept(); // 等待客户端连接
clients.add(clientSocket); // 将连接的客户端 Socket 加入到 clients 列表中
// 为每个客户端启动一个线程,用于接收客户端发送的消息
new Thread(() -> {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line); // 打印客户端发送的消息到控制台
broadcast(line); // 将消息广播给所有连接到聊天室的客户端
}
} catch (IOException e) {
System.err.println("Error handling client: " + e.getMessage());
} finally {
clients.remove(clientSocket); // 在客户端断开连接后,将其 Socket 从 clients 列表中移除
}
}).start();
}
}
// 将消息广播给所有连接到聊天室的客户端
private static void broadcast(String message) {
for (Socket client : clients) {
try {
PrintWriter writer = new PrintWriter(client.getOutputStream(), true);
writer.println(message); // 将消息发送给客户端
} catch (IOException e) {
System.err.println("Error broadcasting message: " + e.getMessage());
}
}
}
}
```
在上述代码中,我们创建了一个 `ChatRoomServer` 类作为聊天室的服务端,该服务端可以监听客户端的连接请求,并在客户端连接后为每个客户端启动一个线程用于接收客户端发送的消息,并将消息广播给所有连接到聊天室的客户端。当客户端断开连接时,将其 Socket 从 clients 列表中移除。
阅读全文