http://pic.yupoo.com/laycher_v/CwPWBTlm/12Tbbt.png

这篇文章的原产期应该是在11月份的,草稿我也写好了,但是由于还想在修饰修饰,未曾料到保存草稿的在线记事本网站服务器挂了,说是一个星期恢复,可是这都要1月份了,还是没有修复好。好崩溃啊~。~ 好吧,不能再等了,只能自己重新写一份吧。这次咱就不唠叨生活了,直入主题。

看题目就知道这次分享的东西,简单的书就是是用Java开发的类似于QQ的即时聊天工具,这个是我的毕业设计的题目,现在分享给有需要的人吧。论文是不可能给你们的啦,给你们源码,你们自己看看吧。这份代码不完全是我自己写的,我记得最初的代码是从网上找的,但是我不记得是从哪里搞的了,在此对原作者表示抱歉,之后对代码进行了修改,重写写了界面,增加了一些功能。

摘要

主要设计和开发一个基于Java的局域网即时通信软件,采用客户端/服务器架构模式,功能上实现基本的一对一通信和传输文件,另外还有注册、登录、添加好友、删除好友等功能。该系统基于TCP/IP网络协议,使用Java语言开发,通过Socket进行通信,界面简洁,服务器端使用MySQL数据库存储数据。开发中使用了多线程、泛型、反射、抽象等技术。

功能介绍

此软件是基于C/S模式开发的,分为服务端和客户端。

服务端

  • 开启关闭服务器。
  • 开放端口,监听客户端发来的请求。
  • 处理各种请求,需要对数据库操作的,能够正常并正确的处理。
  • 请求包括:(1)登录请求;(2)注销请求;(3)注册请求;(4)更新资料请求;(5)查看资料请求;(6)搜索好友请求;(7)添加好友请求;(8)删除好友请求;(9)离线信息请求;(10)找回密码请求。

客户端

  • 注册功能。
  • 找回密码功能。
  • 设置连接的服务器功能。(便于测试,打死的话比较麻烦了。)
  • 登录功能。
  • 发送信息功能,可发送默认的表情。
  • 传送文件功能。
  • 查询用户功能。
  • 添加和删除好友功能。
  • 发送和接收离线消息功能。
  • 修改密码功能。
  • 查看聊天记录功能。
  • 其他小功能,比如靠边时自动隐藏、最小化右下角运行、聊天时设置字体、截屏、好友上线提醒。

开发环境

  • 操作系统:Windows 7;
  • 编程语言:Java;
  • 数据库系统:MySQL 5.5;
  • 开发框架:Swing;
  • 开发工具:Eclipse 3.6。

概要设计

其实思想上设计是比较简单的。说白了最主要的就是数据库的功能的使用以及TCP和UDP的连接和传送。

用户与用户之间的聊天要有时效性、发送的数据又少,所以采用UDP的协议传送,虽不安全,速度快。

传送文件的连接是TCP的连接,毕竟文件是点到点且必须保证完整地传输的。

服务器与客户端之间的连接是TCP的,传输的都是重要的东西啊,必须要有保证。

密码采用MD5加密。

数据库采用连接池和多线程。

详细设计

擦,这部分我就不说了,看得懂代码你就懂得具体是怎么设计的了。

效果截图

 

JQ 聊天器 服务器界面

JQ 聊天器 登录界面

 

JQ 聊天器 主面板

JQ 聊天器 右键功能

JQ 聊天器 聊天界面

JQ 聊天器 查找好友界面

JQ 聊天器 个人资料

JQ 聊天器 聊天记录

JQ 聊天器 修改密码

使用说明

JQServer\properties下

jdbc config.properties 设置数据库的连接设置;
JQ_database.sql  导入MySQL数据中的表结构。

默认已经有很多账号了,1001到1005都设置了,默认的登录密码是123456.

导入项目之后,运行可能运行不起来的话,如果提示是缺少包的话,请加入JQChat\JQClient\src\lib下的包。

缺陷

这个软件只能是半成品,我觉得后面可以改很多东西,也有很多缺陷。我目前想到的我列一下。

  • 如果在同一台机子上登录两个客户端的话,因为服务器是根据IP地址记录的,所以本机和本机聊天的话,信息就会错乱。不知道能否通过线程号之类的区分一下。
  • 传送大文件(500MB)的时候可能会有些卡。
  • 服务端的界面上的在线用户和已注册用户没有做,就是说没有显示。
  • 用户状态没有做好,即隐身啊、离线啊啥的。
  • 当时答辩的时候,导师也说了一点,如果服务器断线的话,用户怎么办?当时想到的是,客户端做个循环一直去查与服务器的连接状态,如果断开,会弹出提醒之类的。
  • 打包成exe我也做了,这里就不提供了。自己弄下吧。
  • 聊天记录中默认的表情没有显示,因为直接读取的聊天记录文件。可能读取的时候需要转换一下。
  • 没法发送自定义的图片。
  • 语音聊天、视频聊天啊。

这个只能算作半成品,还有很多可以完善,希望这个对你有帮助,同时希望你能够在此基础之上继续开发。

Laycher我现在已经不做开发了。无力了~.~

代码查看

 

https://github.com/laycher/JQChat

 

 

>> 若为原创,转载请注明: 转载自Laycher's Blog

>> 本文链接地址: 基于Java的局域网即时通信软件开发

>> 订阅本站: http://feed.feedsky.com/laycher