中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java怎么編寫簡單聊天室

小億
83
2024-09-26 03:49:10
欄目: 編程語言

要用Java編寫一個簡單的聊天室,你可以使用套接字編程(Socket Programming)。這里是一個基本的聊天室實現教程:

  1. 創建服務器端(Server)代碼:
import java.io.*;
import java.net.*;

public class ChatServer {
    private static final int PORT = 12345;
    private static Socket socket;

    public static void main(String[] args) throws IOException {
        serverSocket = new ServerSocket(PORT);
        System.out.println("服務器啟動,等待客戶端連接...");

        while (true) {
            socket = serverSocket.accept();
            System.out.println("客戶端已連接:" + socket.getInetAddress());

            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            String userInput;
            while ((userInput = in.readLine()) != null) {
                System.out.println("收到消息:" + userInput);
                broadcastMessage(out, userInput);
            }

            socket.close();
        }
    }

    private static void broadcastMessage(PrintWriter out, String message) {
        for (Socket client : new ArrayList<Socket>(clients)) {
            if (client != socket) {
                try {
                    out.println(message);
                } catch (IOException e) {
                    e.printStackTrace();
                    clients.remove(client);
                    try {
                        client.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            }
        }
    }
}
  1. 創建客戶端(Client)代碼:
import java.io.*;
import java.net.*;

public class ChatClient {
    private static final String SERVER_ADDRESS = "localhost";
    private static final int PORT = 12345;
    private static Socket socket;
    private static BufferedReader in;
    private static PrintWriter out;

    public static void main(String[] args) throws IOException {
        socket = new Socket(SERVER_ADDRESS, PORT);
        System.out.println("已連接到服務器:" + SERVER_ADDRESS + ":" + PORT);

        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        out = new PrintWriter(socket.getOutputStream(), true);

        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        String userInput;

        while (true) {
            System.out.print("請輸入消息:");
            userInput = stdIn.readLine();
            if (userInput.equalsIgnoreCase("exit")) {
                break;
            }
            out.println(userInput);
            System.out.println("服務器回復:" + in.readLine());
        }

        socket.close();
    }
}
  1. 分別運行服務器端和客戶端代碼。首先啟動服務器端,然后啟動一個或多個客戶端。現在可以在客戶端輸入消息并查看服務器的回復。

注意:這個示例僅適用于單個服務器和客戶端。要實現多個客戶端之間的通信,可以將客戶端添加到clients列表中,并在broadcastMessage方法中遍歷該列表以向所有客戶端發送消息。同時,為了簡化代碼,這里沒有處理異常。在實際應用中,應該對異常進行適當的處理。

0
花莲县| 岳池县| 武鸣县| 夹江县| 额尔古纳市| 敦化市| 酒泉市| 泸水县| 雷州市| 苍山县| 桐城市| 天气| 永仁县| 谷城县| 石楼县| 吴忠市| 淅川县| 视频| 文成县| 伊通| 依兰县| 黄石市| 晋州市| 新邵县| 彝良县| 边坝县| 永年县| 白城市| 浦县| 苍梧县| 台山市| 大英县| 眉山市| 北碚区| 溆浦县| 广州市| 洞口县| 曲阜市| 都昌县| 高清| 嘉禾县|