以下是一个简单的Java聊天室示例,具备基本的客户端和服务器功能。您可以根据自己的需求进行扩展和调整。\n\njava\n// ChatServer.java\n\nimport java.io.*;\nimport java.net.*;\nimport java.util.*;\n\npublic class ChatServer {\n private static final int PORT = 1234;\n private static Set<PrintWriter> clientWriters = new HashSet<>();\n\n public static void main(String[] args) {\n try (ServerSocket serverSocket = new ServerSocket(PORT)) {\n System.out.println("Chat Server started on port " + PORT);\n\n while (true) {\n Socket clientSocket = serverSocket.accept();\n System.out.println("New client connected: " + clientSocket);\n\n PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());\n clientWriters.add(writer);\n\n Thread clientThread = new Thread(new ClientHandler(clientSocket, writer));\n clientThread.start();\n }\n } catch (IOException e) {\n System.out.println("Error in the server: " + e.getMessage());\n e.printStackTrace();\n }\n }\n\n public static void broadcastMessage(String message) {\n for (PrintWriter writer : clientWriters) {\n writer.println(message);\n writer.flush();\n }\n }\n\n private static class ClientHandler implements Runnable {\n private Socket clientSocket;\n private PrintWriter writer;\n\n public ClientHandler(Socket clientSocket, PrintWriter writer) {\n this.clientSocket = clientSocket;\n this.writer = writer;\n }\n\n @Override\n public void run() {\n try (BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))) {\n String message;\n while ((message = reader.readLine()) != null) {\n System.out.println("Received message: " + message);\n broadcastMessage(message);\n }\n } catch (IOException e) {\n System.out.println("Error handling client: " + e.getMessage());\n e.printStackTrace();\n } finally {\n clientWriters.remove(writer);\n }\n }\n }\n}\n\n\njava\n// ChatClient.java\n\nimport java.io.*;\nimport java.net.*;\n\npublic class ChatClient {\n private static final String SERVER_IP = "localhost";\n private static final int SERVER_PORT = 1234;\n\n public static void main(String[] args) {\n try (Socket socket = new Socket(SERVER_IP, SERVER_PORT);\n BufferedReader serverReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));\n PrintWriter serverWriter = new PrintWriter(socket.getOutputStream(), true);\n BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in))) {\n\n System.out.println("Connected to the Chat Server.");\n\n // Start a separate thread to handle server messages\n Thread serverThread = new Thread(() -> {\n String message;\n try {\n while ((message = serverReader.readLine()) != null) {\n System.out.println("Received: " + message);\n }\n } catch (IOException e) {\n System.out.println("Error reading from server: " + e.getMessage());\n e.printStackTrace();\n }\n });\n serverThread.start();\n\n String userInput;\n while ((userInput = consoleReader.readLine()) != null) {\n serverWriter.println(userInput);\n }\n } catch (UnknownHostException e) {\n System.out.println("Unknown host: " + SERVER_IP);\n e.printStackTrace();\n } catch (IOException e) {\n System.out.println("Error connecting to server: " + e.getMessage());\n e.printStackTrace();\n }\n }\n}\n\n\n这是一个简单的聊天室示例,服务器在端口1234上监听客户端连接。客户端可以通过ChatClient类连接到服务器并发送消息,服务器将收到的消息广播给所有连接的客户端。\n\n请注意,此代码示例仅提供基本的功能,您可能需要根据自己的需求进行扩展。例如,您可以添加用户身份验证、私人消息功能等。

Java 聊天室代码示例:构建简单的实时聊天应用

原文地址: https://www.cveoy.top/t/topic/qfPU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录