Java聊天室 IO流 Socket流 GUI界面 枚举与包装消息内容代码及详解(User里存放的是将需要传递的内容整体打包为一个对象 然后分开读取 Net里存放的是服务端的消息类型枚举

Java聊天室 IO流 Socket流 GUI界面 枚举与包装消息内容代码及详解(User里存放的是将需要传递的内容整体打包为一个对象 然后分开读取 Net里存放的是服务端的消息类型枚举 根据消息类型进行分类型的读取 )

MsgTypeConfig

package SanWa.Net;

public enum MsgTypeConfig {
    PRIVATE_MSG, 私聊枚举类型
    ONLINE_LIST1, 隐身上线的查询在线列表枚举类型
    SHANGXIAN, 上下线枚举类型
    WENJIAN, 发送文件枚举类型
    FANKUI,接受或拒绝消息反馈枚举类型
    PUBLIC_MSG,公聊枚举类型
    ONLINE_MSG,隐身上线枚举类型
    ONLINE_LIST,获取在线列表
    EXIT_MSG;下线功能
}

User

package SanWa.Net;

import java.io.Serializable;
import java.net.Socket;
import java.util.HashMap;

public class User implements Serializable {
    static final long serialVersionUID = 456789L; 
    private String username;
    private String userSend;
    private String content;
    private MsgTypeConfig msgType;
    private long time;
    private HashMap<String, Socket> hm;
    private String fileName;
    private long fileLength;
    private byte fileData[];

    public User(String username, String userSend, MsgTypeConfig msgType, long time, String fileName, long fileLength, byte[] fileData) {
        this.username = username;
        this.userSend = userSend;
        this.msgType = msgType;
        this.time = time;
        this.fileName = fileName;
        this.fileLength = fileLength;
        this.fileData = fileData;
    }

    public User(String username, String content, MsgTypeConfig msgType, long time, HashMap<String, Socket> hm) {
        this.username = username;
        this.content = content;
        this.msgType = msgType;
        this.time = time;
        this.hm = hm;
    }

    public User(String username, String content, MsgTypeConfig msgType, long time) {
        this.username = username;
        this.content = content;
        this.msgType = msgType;
        this.time = time;
    }

    public User(String userSend, String username, String content, MsgTypeConfig msgType, long time) {
        this.userSend = userSend;
        this.username = username;
        this.content = content;
        this.msgType = msgType;
        this.time = time;
    }

    public User() {
    }

    public String getFileName() {
        return fileName;
    }

    public long getFileLength() {
        return fileLength;
    }

    public byte[] getFileData() {
        return fileData;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", userSend='" + userSend + '\'' +
                ", content='" + content + '\'' +
                ", msgType=" + msgType +
                ", time=" + time +
                ", hm=" + hm +
                '}';
    }

    public String getUserSend() {
        return userSend;
    }

    public HashMap<String, Socket> getHm() {
        return hm;
    }

    public MsgTypeConfig getMsgType() {
        return msgType;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }


    public long getTime() {
        return time;
    }

    public void setTime(long time) {
        this.time = time;
    }
}

  • static final long serialVersionUID = 456789L; 固定ObjectInputStream的种子 不然读取会混乱
  • private String username; 当前客户端的名字
  • private String userSend; 要发送消息的人名
  • private String content; 发送的内容
  • private MsgTypeConfig msgType; 消息类型
  • private long time; 时间
  • private HashMap<String, Socket> hm; 存储着服务器在线用户的hashmap
  • private String fileName; 发送文件时的文件路径
  • private long fileLength;发送文件时的文件长度
  • private byte fileData[];发送文件时的存储文件数据的字节数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值