JAVA 仿QQ聊天程序(附源码) |
您所在的位置:网站首页 › 腾讯聊天室的雪帮 › JAVA 仿QQ聊天程序(附源码) |
个人推荐: 📢📢📢 前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下 "通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。点击跳转到教程。 前言: 第一次通过java编写完了一个模拟QQ的C/S软件【开心,感觉用C#写C/S要舒服的多啊,哈哈哈…】,项目是通过三层架构编写,由于对JavaJDBC不是很熟悉,所有数据交换写的是真的垃圾啊,软件还是存在一些问题的,比如文件传输,由于没有采用线程,软件打开一次只能传输一次,还有就是要先发送端点击发送后才能,点击接受不然接受不到数据…软件还是挺不错【自夸一下狗头】,其他的问题就不说了,自己去看源码吧… 本篇博文目录: 一.三层架构简要分析二.三层架构命名规范三.项目搭建:QQ项目四.相关功能的实现讲解五.QQ项目部署六.软件效果预览七.下载链接(旧版本)八.项目更新 一.三层架构简要分析DAL----数据访问层 BLL-----业务逻辑层 UI-------表示层 (注:三层通过实体对象进行数据传递) 1:com.cqgy.qq[程序入口] 客服端:Client 客服端接口:SetparametersFrameClient 接口界面: 6:Common:常用操作 com.cqgy.ui.commmon 1.自动登入功能 [主窗体] 2.用户是否在线功能 【数据访问层】 【UI表示层】 (1):数据验证部分 [5.查询用户信息功能;6.搜索功能;7.添加好友;8.删除好友;9.修改好友信息;10.聊天功能;5,6,7,8,9,10:功能和前面基本一致,Ui表示层实现业务,业务逻辑层提供业务,数据传输层提供业务对数据的操作方法]。 【调试】 搜索功能—搜索出来的用户不同可操作的信息也不同 11.文件传输功能 【注:】文件传输功能未采用线程方式,所以程序运行一次只可传输一次文件 【发送端】 (1)文件可以通过拖拽的方式获取文件全路径(接受端有讲解) 通过start进行发送 (1):数据库部署 在配置文件中配置自己数据库一致的参数 Mysql8.0版本需要将配置文件中 driver=com.mysql.jdbc.Driver 修改为driver=com.mysql.cj.jdbc.Driver (3)在数据库中创建数据库和表格并添加数据 ------创建表结构和数据库 /* 创建数据库 */ CREATE DATABASE IF NOT EXISTS qq; use qq; /* 用户表 */ CREATE TABLE IF NOT EXISTS user ( user_id varchar(80) not null, /* 用户Id */ user_pwd varchar(25) not null, /* 用户密码 */ user_name varchar(80) not null, /* 用户名 */ user_icon varchar(100) not null, /* 用户头像 */ state int(2) not null, PRIMARY KEY (user_id) ); /* 用户好友表Id1和Id2互为好友 */ CREATE TABLE IF NOT EXISTS friend ( user_id1 varchar(80) not null, /* 用户Id1 */ user_id2 varchar(80) not null, /* 用户Id2 */ PRIMARY KEY (user_id1, user_id2) );-------添加数据 use qq; /* 用户表数据 */ INSERT INTO user VALUES('111','123', '关东升','28',0); INSERT INTO user VALUES('222','123', '赵1', '30',0); INSERT INTO user VALUES('333','123', '赵2', '52',0); INSERT INTO user VALUES('888','123', '赵3', '53',0); /* 用户好友表Id1和Id2互为好友 */ INSERT INTO friend VALUES('111','222'); INSERT INTO friend VALUES('111','333'); INSERT INTO friend VALUES('888','111'); INSERT INTO friend VALUES('222','333');【注意:插入数据时如果出现了以下错误】 14:00:58 INSERT INTO user VALUES(‘111’,‘123’, ‘关东升’,‘28’,0) Error Code: 1366. Incorrect string value: ‘\xE5\x85\xB3\xE4\xB8\x9C…’ for column ‘user_name’ at row 1 0.000 sec 在数据库中输入: alter table user convert to character set utf8; alter table friend convert to character set utf8;然后再执行添加数据操作: use qq; /* 用户表数据 */ INSERT INTO user VALUES('111','123', '关东升','28',0); INSERT INTO user VALUES('222','123', '赵1', '30',0); INSERT INTO user VALUES('333','123', '赵2', '52',0); INSERT INTO user VALUES('888','123', '赵3', '53',0); /* 用户好友表Id1和Id2互为好友 */ INSERT INTO friend VALUES('111','222'); INSERT INTO friend VALUES('111','333'); INSERT INTO friend VALUES('888','111'); INSERT INTO friend VALUES('222','333');(3)启动服务端接口 (4)启动客服端,设置IP并点击设置 (5)程序运行
链接: https://pan.baidu.com/s/14BaDEJ9F0Tk8ToG0PmQl4Q 提取码:w5ae ###更新时间:2022年6月8号### 最近发现这个项目还是挺多人下载的,并且也收到很多朋友的留言,在安装的时候出现很多问题,所以这里对大家的问题进行一个汇总,并方便后面的朋友更容易安装和使用。 问题1:mysql安装的版本是8.0的问题? 解决步骤1: 在配置文件中将driver修改为driver=com.mysql.cj.jdbc.Driver 解决步骤2: 下载mysql8.0驱动 驱动下载: 百度网盘方式下载( 驱动是我随便在网上搜索的8.0的驱动 )链接:https://pan.baidu.com/s/1gTKoAYoKVoo8pitZGLeAbQ 提取码:clhp mysql官网下载驱动当然我们也可以去mysql官方下载自己需要的版本,官网地址https://downloads.mysql.com/archives/c-j/:
将复制的jar文件复制到项目中,并且进行Build Path 问题2:二台电脑之间是否可以通过软件进行聊天? 原有程序的话,是不可以的,因为在Server类下,有一个clientList的集合用于保存用户信息,在原来的代码中是直接创建的一个静态集合,所以当在二台机器上运行的时候,另外一台是无法获取到这个集合,所以就无法实现二台PC直接的通信,解决办法是将用户登入的信息保存的数据库中即可解决。 修改后的代码,我在虚拟机上进行了简单的测试(Linux可以将数据发送到Windows机器上,但是Windows机器上无法发送消息到Linux上,我猜测应该是Linux防火墙问题,Windos机器上的防火墙是关闭的( 所以一定要把Windows的防火墙进行关闭 ),如果二台Windows的话,将二台的防火墙关闭,理论上是可以实现通信的,由于代码是很久以前写的了,我也只是简单的修改一下,如果出现什么问题,你需要自己动手修改一下) 二台机器聊天截图: 问题3:该项目是使用的UDP还是TCP? 该项目是一个纯UDP项目,大致的通信图如下: ( 圆圈部分是服务器端,长方形部分为客户端 ) 通信原理就是客户端将数据(包括接收方姓名,发送的数据)发送到本机上的服务端,服务端根据数据的接收方的信息,查找对应的Ip和端口号,将数据直接放给接收方(另一台电脑的客户端),同样的另外一台电脑也是如此。 问题4:修改后的程序部署问题? 步骤一:修改数据库地址 在前面我们是直接使用的本机地址,所以这里需要修改数据所在机器的IP地址 这里记录一种方式就是授权: 登入mysql然后执行下面sql语句: mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY'123456' WITH GRANT OPTION; mysql>flush privileges;步骤三:导入数据库 数据库这里我直接导出来了,放在 /项目源码/QQ/db/qq.sql 步骤四:端口号和IP怎么输入 Ip地址只能够输入当前电脑的IP地址,端口号二台机器保持同一个端口号即可(当然是未使用的端口)。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |