亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
普格县| 都江堰市| 海南省| 高平市| 准格尔旗| 奈曼旗| 绥德县| 蓬溪县| 苍溪县| 商都县| 崇州市| 阿城市| 六盘水市| 黄浦区| 蒙自县| 虎林市| 兴义市| 运城市| 洞口县| 邓州市| 揭西县| 峨眉山市| 冕宁县| 禹州市| 砀山县| 江山市| 聊城市| 平阳县| 新河县| 岑巩县| 蓬莱市| 万全县| 宜都市| 潞城市| 古丈县| 修水县| 临西县| 资兴市| 英吉沙县| 屯昌县| 五大连池市|