91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
宁乡县| 体育| 新泰市| 东城区| 教育| 光山县| 泰来县| 亚东县| 鄢陵县| 云霄县| 江安县| 新巴尔虎右旗| 弥渡县| 深泽县| 昆山市| 襄城县| 瑞丽市| 木里| 九台市| 池州市| 东明县| 淄博市| 柘荣县| 福鼎市| 苍山县| 龙江县| 马公市| 巴南区| 菏泽市| 滦平县| 喜德县| 大悟县| 乌鲁木齐县| 威宁| 江西省| 富顺县| 沧州市| 将乐县| 堆龙德庆县| 安义县| 米泉市|