项目介绍

该项目简单模仿QQ的聊天模块、项目功能模块包括用户注册、登陆、点击私聊和创建群聊

项目详情

为提升用户体验采用Druid数据源、使用Swing技术开发用户界面、对于客户端服务端的通信采用套接字连接、使用 HashMap实现对用户、用户私聊、群聊界面等的缓存

开发

准备工作:

1.数据源 : Druid 拽~ 阿里数据源 优点:1.降低资源消耗 2.提高响应速率 3.方便管理

1.加载数据源

2.获取连接 Connection

3.执行SQL

4.关闭资源

通过继承.有重复的封装在BasedDao

查询类SQL

select : executeQuery

PreparedStatement

ResultSet

更新类SQL

insert/update/delete

PreparedStatement

//页面 Swing

//页面

JPanel - 盘子 存放各类组件的基础容器

JLabel - 标签 图片也是标签

JTextField - 输入框

JButton - 按钮

JOptionPanel - 提示框(静态方法)

JScrollPane 滚动条

farm.size(400,400); 要删除 pork

//建立连接

使用套接字建立连接

ServerSocket 服务端

-accept(): 返回客户端的Socket

Socket 客户端

工具类抽取

加载资源文件使用 XXX.properties 文件 所以提取为工具类,读取资源文件

传递消息 使用 json字符串

  • {“key”:“value”,…}

第三方工具 转换 json序列化概念 str -> Object :json的反序列化 Object -> str :json的序列化

这和以前的序列化功不一样 以前的 序列化是把 对象变为流的形式 Object…()方法之类的

//你想转换 首先得拥有一个 Google的Gson类


/** 封装所有公共操作 包括 json 格式* getResourceAsStream(fileName); 方法会读取当前工程下的资源文件** ctrl 加 shift 加 T 创建测试类* */public class CommUtil {private static final Gson GSON = new GsonBuilder().create();//通过properties的文件名 来获取properties资源文件public static Properties loadProperties(String fileName){Properties properties = new Properties();InputStream inputStream = CommUtil.class.getClassLoader().getResourceAsStream(fileName);try {properties.load(inputStream);} catch (IOException e) {System.err.println("资源文件加载失败");e.printStackTrace();return null;}return properties;}//首先要用Gson//序列化public static String object2String(Object object){return GSON.toJson(object);}public static Object string2Object(String string, Class objClz){return GSON.fromJson(string,objClz);}}

Message 类

//规定字段

type:1

content:userName

to:(私聊,群聊)

1、注册页面

//MD5加密

//注册用户: 在服务端实现,需要网络

//注册成功返回登陆界面, 连接断掉 --> 简化 现在放在客户端

注册成功提示注册成功,隐藏注册页面,返回登陆页面,

不成功,不隐藏当前页面.

2、登陆
服务端

1.保存新用户的上线信息 //最后左

2.将当前的所有用户 发送给新用户的好友列表

3.服务器给新用户的所有好友 发送上线提醒

客户端

1.与服务器建立连接, 将自己的用户名与Socket保存到服务端缓存

2.读取服务端的所有在线好友信息

3.既然要接收 , 那么新建一个后台线程不断读取服务端发送来的信息

点击登录

1.发送验证码 验证用户名 密码

-不成功 提示 继续当前页面

-成功 和服务器连接

? 但服务器怎么知道是你 -你的qq号

//现在还是存在一个问题 我可以重复登录 / 那么想要解决这个问题 或许可以从 服务器端的Map集合入手

-比如说名字已经在服务器端的Map集合里面了!!! 那我就可以不去服务端查找 直接告诉你 你还想一号登两次?

3、用户私聊

客户端:

私聊的发起者,主动发送发

1.点击要私聊的用户标签,弹出私聊界面

2.在弹出的页面,按照指定的协议向服务器发送私聊信息

-type : 2

-content : sender-msg

-to:目标客户端的用户名

//.不可能每次点击都new一下私聊界面 所以存在缓存

信息的接收方:

1.判断是私聊或者群聊 , 判断有没有界面 没有就new一个否则取出 弹出私聊界面 …

2.按照指定协议读取内容,发送信息

服务端:

1.收到客户端发来的私聊信息,取出目标端的Socket, 做信息转发

4、客户顿

群聊发起者

1.点击群名称标签,弹出群聊界面

2.将群聊内容发送到服务端

//type :4

//content : senderName - msg

//to : groupName

群聊接受者

服务端

1.收到群聊信息.解出群名

2.根据群名称,找到该群的所有用户 然后根据clients 找到该用户socket 然后发送信息

聊天室项目开发过程总结相关推荐

  1. web聊天室项目开发过程及重难点整理

    目录 一.需求分析 二.业务背景 1.张三要发消息给李四 2.WebSocket实现消息推送流程 三.前后端接口和数据库系统设计 1.用户相关的接口 2.频道相关接口 3.数据库表的设计 四.功能交互 ...

  2. 仿微信的网络聊天室项目开发【完整源码讲解】

    目录 总体开发思路 服务器端 服务器界面设计 建立TCP服务器端通信 建立服务器消息发送输出流 建立服务器消息接收输入流 建立服务器实时消息通信线程 设置服务器通信自由断开 客户端 客户端界面设计 建 ...

  3. Linux环境下——C语言聊天室项目

    由于使用了多线程操作,客户端进入程序后请先随便注册一次用户后再进行使用. 本程序默认第一个用户即ID为1的用户为超级管理员. 由于线程阻塞,最后的踢人操作有阻塞,需要在被踢出在线链表后手动下线. 看了 ...

  4. 基于Linux下的即时通讯聊天室项目(全代码 有注释 可直接运行)

    基于Linux下的即时通讯聊天室项目 一.序言 二.具体功能 三.系统客户要求 四.具体代码 1.服务器代码 2.客户端代码 一.序言 最近在写一个基于Linux下的聊天工具 它适合于局域网内所有人进 ...

  5. C语言聊天室项目说明书

    网络聊天室项目说明 项目的目的和意义 该聊天室项目为利用linux下C语言网络编程相关知识,采用Server/Client,即服务器与客户端的基本框架实现.整个项目涉及了socket套接字,线程,嵌入 ...

  6. 聊天室项目(一)-展示

    聊天室功能展示 聊天室要求: 1 . 项目简述 实现Linux环境下的简易聊天室,采用C/S模型,实现多客户端之间的稳定数据传输.可参考QQ.微信功能. 2. 项目需求 功能后的与代表选做,其中代表难 ...

  7. Springboot+Vue实现在线聊天室项目-修改头像、添加好友接口的实现

    Springboot+Vue实现在线聊天室项目 该聊天室为大二上学期计算机网络大作业,并且是本人第一次使用vue实现前后端分离的项目,前端架构尚未熟悉可能会出现一些不妥之处,还请大佬们指出.(本文章写 ...

  8. Java聊天室项目GUI界面化实现(Java聊天室 IO流 Socket流 GUI界面 )

    Java聊天室项目GUI界面化实现(Java聊天室 IO流 Socket流 GUI界面 ) 文章目录 Java聊天室项目GUI界面化实现(Java聊天室 IO流 Socket流 GUI界面 ) 1.J ...

  9. 【Java学习】聊天室项目(32)

    聊天室项目需求: 1.用户名登录注册(判断有没有重复用户名,可设置ip和端口) 2.上下线提醒 3.在线列表 4.私聊 5.公聊 6.发送文字,文件. 7.聊天记录 保存 查询 删除. 8.下线 选做 ...

最新文章

  1. Spring--Context
  2. 带彩色字体的man pages(debian centos)
  3. poj2976 Dropping tests
  4. vim插件管理器minpac安装及使用
  5. 全国首个园区型绿色能源网一年“减碳”上万吨
  6. linux扫描硬盘故障命令
  7. java正则匹配性能,Java正则表达式的性能问题
  8. JS精粹知识点和我的解释
  9. 数据库第四次作业:数据备份与还原
  10. 机器学习算法——神经网络4(RBF神经网络)
  11. c语言编黑白棋的思路,黑白棋的问题。。555。。头发都掉了。。。
  12. 【Udacity项目】TMDb电影数据集探索分析
  13. 数据分析 - 数据可视化图表 适用场景(学习笔记)
  14. 神经网络之父Hinton介绍及其论文介绍
  15. 中国移动国际mCloud如何助力企业乘风破浪?
  16. 量化投资中的特征工程
  17. linux灯控软件,Ubuntu下通过脚本控制键盘背光灯
  18. 用CSS样式完成作业
  19. 外汇天眼:什么是外汇动量交易?新手指南
  20. 南昌大专计算机学校有哪些,江西南昌单招大专学校有哪些学校

热门文章

  1. 夏天CPU温度过高原因及解决办法
  2. Layui写后台登录页面 蓝奏云 下载
  3. Tensorflow C++接口部署python深度学习训练模型
  4. 道阻且长 行则将至——android学习总结
  5. 改造,分刷新显卡BIOS和驱动修改两种
  6. google v8 实战 -- 构建v8
  7. 13部成功预知未来科技的科幻电影
  8. 微信开发-错误码大全
  9. PHP微信公众号开发接口封装
  10. 坐标系,坐标系转换,梯度计算