软件介绍:以下是一个简单的 Java Socket 服务端连接多个客户端的代码示例:import java.io.BufferedReader;import java.i...
以下是一个简单的 Java Socket 服务端连接多个客户端的代码示例:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; public class Server { private static ArrayList<Socket> clients = new ArrayList<Socket>(); public static void main(String[] args) { try { int port = 8888; ServerSocket serverSocket = new ServerSocket(port); System.out.println("Server started on port " + port); while (true) { // 接受客户端连接请求,创建一个 Socket 对象 Socket clientSocket = serverSocket.accept(); System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress()); // 将新客户端添加到列表中 clients.add(clientSocket); // 创建输入输出流 BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); // 使用新的线程来处理每个客户端请求 Thread thread = new Thread(new ClientHandler(clientSocket, in, out)); thread.start(); } } catch (Exception e) { e.printStackTrace(); } } public static void broadcast(String message) { for (Socket client : clients) { try { PrintWriter out = new PrintWriter(client.getOutputStream(), true); out.println(message); } catch (Exception e) { e.printStackTrace(); } } } } class ClientHandler implements Runnable { private Socket clientSocket; private BufferedReader in; private PrintWriter out; public ClientHandler(Socket clientSocket, BufferedReader in, PrintWriter out) { this.clientSocket = clientSocket; this.in = in; this.out = out; } public void run() { try { while (true) { String message = in.readLine(); if (message == null) break; System.out.println("Received message from client: " + message); // 广播消息给所有客户端 Server.broadcast(message); } // 关闭输入输出流和套接字 in.close(); out.close(); clientSocket.close(); } catch (Exception e) { e.printStackTrace(); } } }
在此示例中,我们使用 ArrayList 类来存储客户端连接,并通过 broadcast() 方法将消息广播给所有客户端。然后,我们创建一个新的线程来处理每个客户端请求。
请注意,此代码仅提供了一般概述,并假定您已经熟悉 Java 和 Socket 编程。您需要进一步调整和完善代码以确保其适用于您的具体应用程序需求。