Java网络编程之搭建聊天室

本文介绍了如何使用Java实现一个基于控制台的聊天室。项目包括服务器端和客户端,利用多线程技术实现用户间的交流。功能包括欢迎新用户、群聊、私聊以及用户退出提醒。用户需确保客户端配置的服务器IP地址正确,本地测试时可输入localhost。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于控制台的Java聊天室

IDEA用户可以直接到我的github项目页面下载使用 https://github.com/yanghao1550/Chat-Room-Java

该小项目主要使用Socket以及多线程入门知识完成。

Chat.java是服务器端 Client.java是客户端

使用时需要先打开服务器端,再打开多个客户端连接到服务器端进行交流。

主要功能有:

1、欢迎新用户并广播有新用户上线

2、群聊以及私聊功能(默认为群聊,私聊方式为输入"@用户名:message")

3、用户退出提醒

客户端需要保证new Socket()中服务器端IP地址的正确性,如果服务器端是本机,则输入"localhost"即可

代码

Chat.java

/**
 * 在线聊天室:服务器端
 *
 * @Author Nino 2019/10/23
 */
public class Chat {
   
    private static CopyOnWriteArrayList<Channel> all = new CopyOnWriteArrayList<>();

    public static void main(String[] args) throws IOException{
   
        System.out.println("----Server----");
        ServerSocket server = new ServerSocket(8888);
        while (true) {
   
            Socket client = server.accept();
            System.out.println("一个用户已连接");
            Channel c = new Channel(client);
            // 管理所有的成员
            all.add(c);
            new Thread(c).start();
        }
    }

    static class Channel implements Runnable{
   
        private Socket client;
        private DataInputStream dis;
        private DataOutputStream dos;
        private boolean isRunning;
        private String name;

        public Channel(Socket client) {
   
            this.client = client;
            try {
   
                dis = new DataInputStream(client.getInputStream());
                dos = new DataOutputStream(client.getOutputStream());
                isRunning = true;
                name = receive();
                this.send("欢迎");
                this.sendOthers(name + "来到了聊天室",true);
            } catch (IOException e) {
   
                e.printStackTrace();
                release();
            }
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值