Java 实现即时通讯

1901010113 43b3a89271 删除 'out/production/SocketDemo/main/Connect/Connect$2.class' 4 vuotta sitten
out 43b3a89271 删除 'out/production/SocketDemo/main/Connect/Connect$2.class' 4 vuotta sitten
sql 80daeb7a6f chatroom 4 vuotta sitten
src 80daeb7a6f chatroom 4 vuotta sitten
Readme.MD 80daeb7a6f chatroom 4 vuotta sitten

Readme.MD

2020-12-28 18:08:38 星期一


该仓库共有三项目

SocketDemo - 初版

LinkChat - 拓展

ChatRoom - 终版


SocketDemo

『 环境 』

jdk:1.8

数据库 : MySQL5.7

建表如下:

表

注:is_online在线时为1,离线时为0。(默认为0)

『 模式 』

采用C/S模式,使得各个客户端通过服务端转发来实现即时通讯的功能。

『 思路 』

由于202012G09小组的成员都没有服务器

但我们又有着手实现的迫切需求 于是提出下面的思路:

如下图:

思路1

- 将服务端内置到客户端 两端一体

- 每个客户端都成为自己的服务器 则免去中间服务器端

- 如此一来,发送和接收都在本机上不同客户端进行

『 模块 』

  • Register(注册)

    绘制窗口(注册界面)
    实现注册功能

    Tip:

    监听注册事件
    不能空输入,输入的两次密码必须一致。
    插入数据库=>将注册客户的账号密码存储
    自动插入前面一位+1的端口
    
    - Dialogs1:
    绘制注册验证对话框(确认注册成功并跳转至登录界面)
    
  • Login (登录)

    绘制窗口(登录界面)
    实现登录功能

    Tip:

    监听注册按钮
    点击注册跳转注册界面
    监听登录事件
    查询数据库=>验证账号密码及在线状态(存在且离线才能登录)
    更新数据库=>更新客户在线/离线状态
    查询数据库=>查询客户的服务端端口
    开启服务端,开启客户端
    
    - Dialogs4:
    绘制登录验证对话框(确认登录成功并跳转至好友列表)
    
  • Online (线上)

    绘制窗口(好友列表)
    实现好友列表

    Tip: 监听选择/聊天/退出登录事件 查询数据库=>查询在线用户 显示用户到好友列表 更新数据库=>退出时更新用户在线/离线状态 点击聊天跳转至聊天界面

  • Connect (连接)

    绘制窗口(聊天界面)
    实现聊天功能

    Tip: 通过多线程分别创建/开启客户端和服务端 客户端连接聊天对象的服务端,服务端连接聊天对象的客户端 循环不断的发送和接收/写入和读取 将接收和发送的数据在界面上显示 断开时关闭聊天功能的一切服务

『 效果 』

注册

登录

好友列表

聊天