以下是一个简单的 Java 代码实现聊天室功能的範例:

import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(9999);
            System.out.println('Server is running...');
            while (true) {
                Socket socket = serverSocket.accept();
                System.out.println('New client connected: ' + socket);
                DataInputStream in = new DataInputStream(socket.getInputStream());
                DataOutputStream out = new DataOutputStream(socket.getOutputStream());
                Thread thread = new ClientHandler(socket, in, out);
                thread.start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class ClientHandler extends Thread {
    Socket socket;
    DataInputStream in;
    DataOutputStream out;

    public ClientHandler(Socket socket, DataInputStream in, DataOutputStream out) {
        this.socket = socket;
        this.in = in;
        this.out = out;
    }

    @Override
    public void run() {
        try {
            while (true) {
                String message = in.readUTF();
                System.out.println('Received message from ' + socket + ': ' + message);
                for (ClientHandler client : Server.clients) {
                    if (client != this) {
                        client.out.writeUTF(message);
                    }
                }
            }
        } catch (IOException e) {
            System.out.println('Client ' + socket + ' disconnected');
            Server.clients.remove(this);
        }
    }
}

class Client {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket('localhost', 9999);
            System.out.println('Connected to server: ' + socket);
            DataInputStream in = new DataInputStream(socket.getInputStream());
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
            Thread thread = new ServerHandler(in);
            thread.start();
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            while (true) {
                String message = reader.readLine();
                out.writeUTF(message);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class ServerHandler extends Thread {
    DataInputStream in;

    public ServerHandler(DataInputStream in) {
        this.in = in;
    }

    @Override
    public void run() {
        try {
            while (true) {
                String message = in.readUTF();
                System.out.println('Received message from server: ' + message);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

此範例中,Server類負責啟動服務器並接受客戶端連接,並為每個客戶端啟動一個線程(ClientHandler)來處理客戶端發送的消息。ClientHandler類中,當收到客戶端發送的消息時,會將消息發送給所有其他客戶端。Client類則負責連接到服務器並發送消息。ServerHandler類則負責接收服務器發送的消息並輸出到控制台上。

Java 聊天室功能实现代码示例

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

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