实现一个聊天小程序,可以使用 Java 的 Swing 库来创建图形用户界面,使用 Socket 通信来实现多人聊天功能。

以下是一个简单的聊天小程序的示例代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ChatProgram extends JFrame {

    private JTextArea chatArea;
    private JTextField messageField;
    private JButton sendButton;

    private ServerSocket serverSocket;
    private Socket clientSocket;
    private PrintWriter out;
    private BufferedReader in;

    public ChatProgram() {
        setTitle('Chat Program');
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        chatArea = new JTextArea();
        chatArea.setEditable(false);
        JScrollPane scrollPane = new JScrollPane(chatArea);
        add(scrollPane, BorderLayout.CENTER);

        JPanel messagePanel = new JPanel();
        messagePanel.setLayout(new BorderLayout());
        messageField = new JTextField();
        messagePanel.add(messageField, BorderLayout.CENTER);

        sendButton = new JButton('Send');
        sendButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String message = messageField.getText();
                sendMessage(message);
                messageField.setText('');
            }
        });
        messagePanel.add(sendButton, BorderLayout.EAST);
        add(messagePanel, BorderLayout.SOUTH);

        setVisible(true);

        startServer();
    }

    private void startServer() {
        try {
            serverSocket = new ServerSocket(1234);
            chatArea.append('Server started. Waiting for clients...
');

            clientSocket = serverSocket.accept();
            chatArea.append('Client connected.
');

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

            Thread receivingThread = new Thread(new Runnable() {
                @Override
                public void run() {
                    String message;
                    try {
                        while ((message = in.readLine()) != null) {
                            chatArea.append('Client: ' + message + '\n');
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });
            receivingThread.start();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void sendMessage(String message) {
        out.println(message);
        chatArea.append('You: ' + message + '\n');
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new ChatProgram();
            }
        });
    }
}

该程序创建了一个简单的聊天界面,包括一个聊天记录区域、一个消息输入框和一个发送按钮。通过 Socket 通信,程序可以作为服务器等待客户端连接,并在客户端连接后接收和发送消息。

请注意,上述代码只是一个简单的示例,没有处理多人同时连接的情况,也没有对异常进行充分的处理。在实际开发中,还需要添加更多的功能和错误处理。

Java 多人聊天小程序:使用 Socket 实现实时聊天

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

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