java socket编程(3)——利用socket实现聊天之群聊

本文介绍了如何在Java Socket编程基础上,通过修改实体类、服务器逻辑和客户端页面,实现从一对一聊天到一对多的群聊功能。详细步骤包括更新UserGroupBean、MessageBean和UserInfoBean实体类,调整服务器的UserData和ChatServer类,以及客户端的ChatListActivity等。通过这种方式,可以理解并实现基于Socket的一对多通讯。
摘要由CSDN通过智能技术生成

上一篇 java socket编程(2)——利用socket实现聊天之单聊
中我们讲到如何使用socket让客户端和客户端之间传递消息,实现一对一的聊天,接下来我将写出如何让服务器建立客户端与客户端之间的一对多通讯。

还是在原有的代码上加以修改,增加功能。

1,修改实体类(服务器端和客户端的实体类是一样的)

1,UserGroupBean 聊天群表

public class UserGroupBean implements Serializable {
   
    private static final long serialVersionUID = 3L;
    private int groupId;//群id
    private int userId;//用户id
    private int groupNumberByMax;//总人数
    private int groupNumberByCurrent;//当前人数
    private int groupType;//群类型,朋友,家人,同事
    private int groupUserType;//当前用户在群里面的角色,管理员-2,创建者-1,普通人等级:1,2,3,4,5
     //省略get、set方法
    }

2,MessageBean 消息表修改,增加聊天类型,是单聊还是群聊的标识

public class MessageBean implements Serializable {
   
    private static final long serialVersionUID = 1L;
    private long messageId;// 消息id
    private long groupId;// 群id
    private int chatStyle;//0,普通消息;1,群消息;2,讨论组消息;3,系统推送消息;4,好友通知消息
    private int chatType;// 消息类型;1,文本;2,图片;3,小视频;4,文件;5,地理位置;6,语音;7,视频通话
    private String content;// 文本消息内容
    private String errorMsg;// 错误信息
    private int errorCode;// 错误代码
    private int userId;//用户id
    private int friendId;//目标好友id
    private MessageFileBean chatFile;// 消息附件
     //省略get、set方法
     }

3, UserInfoBean 用户信息表,加入该用户所拥有的群集合

public class UserInfoBean implements Serializable {
   
    private static final long serialVersionUID = 2L;
    private int userId;// 用户id
    private String userName;// 用户名
    private String likeName;// 昵称
    private String userPwd;// 用户密码
    private String userIcon;// 用户头像
    private List<UserGroupBean> groupList;//当前用户所拥有的群
     //省略get、set方法
    }

2,服务器增加逻辑

1,UserData 添加模拟数据

public class UserData {
   
    /**
     * 模拟数据库的用户信息,这里创建id不同的用户信息
     * 
     * @param userId
     * @return
     */
    public static UserInfoBean getUserInfoBean(int userId) {
        UserInfoBean userInfoBean = new UserInfoBean();
        userInfoBean.setUserIcon("用户头像");
        userInfoBean.setUserId(userId);
        userInfoBean.setUserName("admin");
        userInfoBean.setUserPwd("123123132a");
        userInfoBean.setGroupList(getUserGroup());
        return userInfoBean;
    }


    /**每个用户模拟两个群
     * @return
     */
    private static List<UserGroupBean> getUserGroup() {
        List<UserGroupBean> list = new ArrayList<>();
        for (int i = 1; i <= 2; i++) {
            UserGroupBean userGroupBean = new UserGroupBean();
            userGroupBean.setGroupId(i);
            userGroupBean.setGroupNumberByMax(500);
            userGroupBean.setGroupNumberByCurrent(20);
            userGroupBean.setGroupType(i);
            userGroupBean.setGroupUserType(-1);
            list.add(userGroupBean);
        }
        return list;
    }
}

2,ChatServer ,修改聊天服务的发送信息逻辑

public class 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值