返回顶部
首页 > 资讯 > 精选 >java怎么实现群聊功能
  • 478
分享到

java怎么实现群聊功能

2023-06-30 15:06:58 478人浏览 八月长安
摘要

这篇文章主要介绍“java怎么实现群聊功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java怎么实现群聊功能”文章能帮助大家解决问题。1、服务端package networkcodin

这篇文章主要介绍“java怎么实现群聊功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java怎么实现群聊功能”文章能帮助大家解决问题。

1、服务端

package networkcoding; import java.io.DatainputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.CopyOnWriteArrayList;  public class WeiHuShanChatRoomServer {    private static CopyOnWriteArrayList<Chat> all= new CopyOnWriteArrayList<Chat>();     public static void main(String[] args) throws IOException {        System.out.println("-----server");         // 1, 指定端口,使用serverSocket创建服务器        ServerSocket server= new ServerSocket(9999);         // 2, 阻塞式等待连接accept        while(true) {        Socket client=server.accept();        Chat chat= new Chat(client);        // 交给容器管理        all.add(chat);        new Thread(chat) .start();        }    }    static class Chat implements Runnable{        private DataOutputStream dos;        private DataInputStream dis;        private Socket client;        private boolean isRuning;        private String name;        public Chat(Socket client) {            this.client=client;            this.isRuning=true;            try {                this.dis = new DataInputStream(client.getInputStream());                this.dos=new DataOutputStream(client.getOutputStream());                this.name=receive();                this.send(this.name+",威虎山欢迎你的到来");                this.sendOthers(this.name+"来到了威虎山",true);            } catch (IOException e) {                // 出错释放资源                System.out.println("===1==");                this.release();                        }        }        private String receive() {            String data="";            try {                data= dis.readUTF();            } catch (IOException e) {                System.out.println("===2==");                //this.release();                            }            return data;        }        // 群聊        private void send(String data) {            try {                dos.writeUTF(data);                dos.flush();            } catch (IOException e) {                System.out.println("===3==");                this.release();                            }        }        private void sendOthers(String data,boolean isSys) {            boolean isPrivate = data.startsWith("@");             if(isPrivate) {                int index= data.indexOf(":");                String targetName=data.substring(1,index);                String msg=data.substring(index+1);                for (Chat chat : all) {                    if(chat.name.equals(targetName)) {                        System.out.println("******"+chat.name+targetName);                        chat.send(this.name+"悄悄对你说:"+msg);                    }                }                            }else {                for (Chat chat : all) {                    if(chat==this) {                        continue;                    }else {                        if(isSys) {                            chat.send(data);                        }else {                            chat.send(this.name+"对大家说:"+data);                        }                    }                                    }            }                    }        private void release() {            this.isRuning=false;            Utils.close(dis,dos,client);            all.remove(this);            sendOthers(this.name+"离开了威虎山", true);        }        @Override        public void run() {            while(isRuning) {                String data = receive();                if(!data.equals("")) {                     sendOthers(data,false);                }else {                    send("不能发送空消息");                }                            }                    }    } }

2、客户端

package networkCoding; import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;import java.net.UnknownHostException;  public class WeiHuShanChatRoomClient {     public static void main(String[] args) throws UnknownHostException, IOException {        BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));        System.out.println("请输入姓名");        String bfString = bf.readLine();        //1, 建立连接,使用socket 创建客户端 + 服务端的地址端口号;        Socket client = new Socket("localhost",9999);        // 2, 操作:输入输出流操作        new Thread(new Send(client,bfString)).start();        new Thread(new Receive(client)).start();            }     }

(1)发送封装类

package networkCoding; import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket; public class Send implements  Runnable{    private BufferedReader bf;    private DataOutputStream dos;    private Socket client;    private boolean isRuning;    private String name;    public Send(Socket client,String name) {        this.client=client;        this.isRuning=true;        this.name=name;        this.bf= new BufferedReader(new InputStreamReader(System.in));        try {            this.dos=new DataOutputStream(client.getOutputStream());            this.send(name);        } catch (IOException e) {            // 出错释放资源            System.out.println("===4==");            this.release();            this.isRuning=false;        }    }    private void release() {        this.isRuning=false;        Utils.close(dos,client);    }    private void send(String data) {        try {            dos.writeUTF(data);            dos.flush();        } catch (IOException e) {            System.out.println("===5==");            this.release();                    }    }    private String getString() {        String dataString ="";        try {            dataString = this.bf.readLine();        } catch (IOException e) {            System.out.println("===6==");            this.release();        }        return dataString;    }        @Override    public void run() {        // TODO Auto-generated method stub        while(isRuning) {            String data = getString();            if(!data.equals("")) {                send(data);            }else {                //send("不能发送空消息");            }                    }    } }

(2)接收封装类

package networkCoding; import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket; public class Receive implements Runnable {    private DataInputStream dis;    private Socket client;    private boolean isRuning;    public Receive(Socket client) {        this.client=client;        this.isRuning=true;        try {            this.dis = new DataInputStream(client.getInputStream());        } catch (IOException e) {            // 出错释放资源            System.out.println("===6==");            this.release();            this.isRuning=false;        }    }    private String receive() {        String data="";        try {            data= dis.readUTF();        } catch (IOException e) {            System.out.println("===7==");            this.release();        }        return data;    }    private void release() {        this.isRuning=false;        Utils.close(dis,client);    }    @Override    public void run() {        while(isRuning) {            String data = receive();            if(!data.equals("")) {                System.out.println(data);            }else {                            }                    }            }      }

3、工具类

package networkCoding; import java.io.Closeable;import java.io.IOException; public class Utils {    public static void main(String[] args) {            }    public static void close(Closeable...target) {        for (Closeable obj : target) {            try {                if(null!=obj) {                    obj.close();                }            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}

关于“java怎么实现群聊功能”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: java怎么实现群聊功能

本文链接: https://lsjlt.com/news/329744.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java怎么实现群聊功能
    这篇文章主要介绍“java怎么实现群聊功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java怎么实现群聊功能”文章能帮助大家解决问题。1、服务端package networkCodin...
    99+
    2023-06-30
  • Java基于NIO实现群聊功能
    本文实例为大家分享了Java基于NIO实现群聊功能的具体代码,供大家参考,具体内容如下 一、群聊服务器 package com.dashu.netty.group_chat; ...
    99+
    2024-04-02
  • Java实现局域网聊天室功能(私聊、群聊)
    本文实例为大家分享了Java实现局域网聊天室功能的具体代码,供大家参考,具体内容如下 Server 服务端 import java.io.IOException; import ja...
    99+
    2024-04-02
  • Java聊天室之实现客户端群聊功能
    目录一、题目描述二、解题思路三、代码详解一、题目描述 题目实现:不同的客户端之间需要进行通信,一个客户端与其他的多个客户端进行通信,实现群聊功能。 实现一个客户端与其他多个客户端进行...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 客户端群聊
  • SpringBoot+STOMP协议怎么实现私聊、群聊功能
    这篇文章主要介绍了SpringBoot+STOMP协议怎么实现私聊、群聊功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、为什么需要STOMP  &n...
    99+
    2023-06-15
  • java怎么实现聊天功能
    要实现聊天功能,可以使用Java中的Socket编程和多线程技术。首先,需要创建一个服务器端和多个客户端。服务器端负责接收和转发客户端之间的消息,而客户端则负责发送和接收消息。服务器端的代码示例:```javaimport java.i...
    99+
    2023-08-11
    java
  • socket.io实现在线群聊功能
    我自己在用socket.io开发,对官方网站上的文档,进行简单的整理,然后自己写了一个简单的聊天程序。最最开始 先安装socket.io: npm install socket.io 利用Node的搭建H...
    99+
    2022-06-04
    在线 功能 socket
  • Java NIO怎么实现聊天室功能
    这篇文章主要介绍了Java NIO怎么实现聊天室功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下代码里面已经包含了必要的注释,这里不详述了。实现了基本...
    99+
    2023-06-21
  • socket.io如何实现在线群聊功能
    小编给大家分享一下socket.io如何实现在线群聊功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!我自己在用socket.io开发,对官方网站上的文档,进行简单的整理,然后自己写了一个...
    99+
    2024-04-02
  • Java NIO实现聊天功能
    本文实例为大家分享了Java NIO实现聊天功能的具体代码,供大家参考,具体内容如下 server code :  package com.tch.test.nio; imp...
    99+
    2024-04-02
  • java网络编程之群聊功能
    本文实例为大家分享了java网络编程之群聊功能的具体代码,供大家参考,具体内容如下 1、服务端 package networkCoding;   import java.io.Dat...
    99+
    2024-04-02
  • 怎么在SpringBoot中利用WebSocket实现一个群聊功能
    本篇文章为大家展示了怎么在SpringBoot中利用WebSocket实现一个群聊功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。消息群发创建新项目:添加依赖:<dependency>...
    99+
    2023-06-06
  • Java基于NIO怎么实现聊天室功能
    Java基于NIO怎么实现聊天室功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Sever端package com.qst.one;import java...
    99+
    2023-06-21
  • Java NIO实现聊天室功能
    本文实例为大家分享了Java NIO实现聊天室功能的具体代码,供大家参考,具体内容如下 代码里面已经包含了必要的注释,这里不详述了。实现了基本的聊天室功能。 常量类: publi...
    99+
    2024-04-02
  • Java Socket实现聊天室功能
    本文实例为大家分享了Java Socket实现聊天室的具体代码,供大家参考,具体内容如下 1 创建登录判断类UserLogin import java.util.HashSet; i...
    99+
    2024-04-02
  • Java实现在线聊天功能
    本文实例为大家分享了Java实现在线聊天功能的具体代码,供大家参考,具体内容如下 效果 关键代码 创建Client.java import java.io.IOException;...
    99+
    2024-04-02
  • java实现简易聊天功能
    本文实例为大家分享了java实现简易聊天功能的具体代码,供大家参考,具体内容如下 应用客户端和服务端通过控制台的输入输出实现简易聊天功能 思路: 1.创建服务端类ChatServer...
    99+
    2024-04-02
  • Android怎么实现聊天功能
    要实现聊天功能,可以使用 Android 提供的 Socket 和网络通信技术。以下是一个简单的实现聊天功能的步骤:1. 创建一个服...
    99+
    2023-10-09
    Android
  • android聊天功能怎么实现
    要实现Android聊天功能,你可以按照以下步骤进行:1. 创建一个用于显示聊天信息的界面。可以使用RecyclerView或Lis...
    99+
    2023-08-18
    android
  • uni-app小程序实现微信在线聊天功能(私聊/群聊)
    目录聊天信息列表的渲染聊天信息发送的相关问题实现一对一聊天关于websocket建立连接存储连接的用户发送聊天信息 首页新消息提示实现群聊加入房间发送群消息之前学习使用un...
    99+
    2023-02-18
    uni-app小程序微信聊天 uni-app微信小程序聊天
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作