存档编号_______
赣 南 师 范 学 院 学 士 学 位 论 文
基于 Java 的仿 QQ 聊天系
统的设计与实现
教学学院 数学与计算机学院
届
专
学
姓
别
业
号
名
2009 届
网络工程
05064522
****
指导老师______****_____
完成日期_
2009-5-7_____
目 录
内容摘要:......................................................................................................................... 1
关键字: ............................................................................................................................. 1
Abstract: ............................................................................................................................1
Key words: ........................................................................................................................1
1. 引言 ................................................................................................................................ 2
2. 系统分析 ........................................................................................................................ 2
2.1 可行性分析...........................................................................................................2
2.2 需求分析 ............................................................................................................... 3
3. 总体设计 ...................................................................................................................... 11
3.1 功能模块图......................................................................................................... 11
3.2 数据库设计......................................................................................................... 12
3.3 类图 ..................................................................................................................... 18
4. 详细设计及实现 .......................................................................................................... 19
4.1 界面设计 ............................................................................................................. 19
4.2 数据输入输出设计 .............................................................................................23
4.3 代码实现 ............................................................................................................. 24
5 系统测试....................................................................................................................... 31
5.1 注册测试 ............................................................................................................. 31
5.2 登陆测试 ............................................................................................................. 31
5.3 私聊测试 ............................................................................................................. 32
5.4 群聊测试 ............................................................................................................. 33
5.5 文件传输测试 .....................................................................................................34
6 总结............................................................................................................................... 35
参考文献 ........................................................................................................................... 37
内容摘要: 计算机网络的迅速发展,对人类社会诸多领域产生了
巨大的影响。尤其是,随着信息时代的来临,人们之间愈来愈趋向于
通过网络来交流和传递信息。而聊天系统正是当前人们使用最多的中
介。在这个平台上,许多认识或不认识的人们彼此间能够随意的相互
交流。因此,开发和架构这种平台符合时代发展的需要。
本系统在开发中用到了局域网通信机制的原理,通过直接继承
Thread 类来建立多线程。开发中利用了计算机网络编程的基本理论知
识,如 TCP/IP 协议、客户端/服务器端模式(Client/Server 模式)、网络
编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来
实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含
了一些基本的软件工程的方法。
关键字: Socket;服务器端; 客户端; 连接(connection)
Abstract:The rapid development of the computer networks has been
making a great influence in many fields of human society. In particular,
along with information age approaching, between the people tend to
increasingly in exchanges and the transmission information through the
network. But chats the system is precisely the current people uses many
intermediary, 。 In this platform, people each other which many
understanding or did not know can at will mutual exchange. Therefore, the
development and overhead construction this kind of platform conforms to
the time need to develop.
This system with the LAN correspondence mechanism principle,
through inheritting the Thread kind to establish the multithreading directly.
In the development, it uses the elementary theory knowledge which the
computer network
example, TCP/IP agreement,
Client/Server pattern, network programming design method and so on. In
the network programming,
it realizes reading and transmission of the
information, that is, informaton flows realize the information exchange,
introduce information flow analysis for realizing a system,
in which
containes some basic software engineering methods.
programmes.
for
Key words: Socket ; server ; client ; connection
1
1. 引言
当 今 主 流 的 聊 天 工 具 有 QQ , ICQ , MSN Messenger , Yahoo
Messenger 等,国内最热门的当属 QQ,腾讯 QQ(OICQ)是由深圳市
腾讯计算机系统公司开发的,基于 Internet 的即时寻呼软件。您可以使
用 QQ 和好友用户进行交流,信息即时发送,即时回复,收发及时、功
能全面。此外 QQ 还具有 BP 机网上寻呼、聊天室、传输文件、语音邮
件、手机短讯服务等功能,QQ 不仅仅是虚拟的网络寻呼机,更可与传
统的无线寻呼网、GSM 移动电话的短消息系统互联,目前 QQ 和全国
多家寻呼台、移动通信公司有业务合作。是国内不可多得的中文网络
寻呼机。QQ 支持显示朋友在线信息、即时传送信息、即时交谈、即时
发送文件和网址。QQ 可以在 Win95/98/NT/2000 操作系统下运行,是
十分灵活的网络寻呼工具。它会自动检查您是否已联网,如果您的电
脑已连入 Internet,可以搜索网友、显示在线网友,可以根据 QQ 号、
昵称、姓名、email 地址等关键词来查找,找到后可加入到通讯录中。
当您的通讯录中的网友在线时,QQ 中朋友的头像就会显示在线,根据
提示就可以发送信息,如果对方登记了寻呼机或开通了 GSM 手机短消
息,即使离线了,您也可及时将信息传递给您的好友。
虽然以上这些软件是免费的,并且功能越来越强大。但是它们的
唯一的不足就是必须要联网或者下载到它们的服务端,要不然是没法
脱离 Intenet 使用的。为了能在一个没有连接到 Intenet 的局域网使用聊
天工具,那就必须要有服务器端。
本系统就是包括服务器端与客户端,可以在局域网聊天的一个工
具。
2. 系统分析
2.1 可行性分析
1)经济可行性:本系统需要一个 oracle 数据库服务器,由于使用
人数比较少,安装一个免费的 oracle 数据库完全可以应付需要,所以
成本就不用考虑了。
2)操作可行性:只要一台以上计算机连接在同一个局域网内,本
系统就可以安装使用,所以操作上完全不存在问题。
3)技术可行性:本系统采用 Java 语言,是基于 CS 架构的。开发
2
这个系统需要开发者对 socket 编程和 java Swing 这两方面的技术比
较熟。由于本人长期从事于 java 语言编程,所以技术方面是可行的。
2.2 需求分析
2.2.1 功能分析
本系统要实现的功能如下:
1)注册
服务器收到用户的注册请求,便开始接受客户传递的信息,诸如
客户的呢称,性别,籍贯,个人资料等,接受完毕后,便通过 Jdbc-Odbc
与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返
回其号码。客户收到服务器返回的信息后,便打开主登陆窗口。
2)登陆
在客户端,用户输入其号码和密码,然后建立与服务器的连接,告
诉服务器我要登录,服务器收到后,开始通过 JdbcOdbc 读取数据库,
然后与用户输入的信息比较,如果成功,便打开主程序窗口。然后客
户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库
中的表,得到好友的号码后,再在 icq 表中读取好友资料,然后向客户
端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个矢
量(Vector)用以存储好友的呢称,号码。
3)私聊
私聊就是两个聊天。客户端首先发送消息到服务器端,服务器端根
据发送人信息和接收者信息来转发。例如服务器接收到一个 A 发给 B
的消息,先判断 B 是否已经在线,如果在线就将信息发送过去。B 接
收到 A 发来的信息,如果是未建立对话窗口,就询问是否建立对话,
否则就丢弃信息。
4)群聊
群聊,就是多人一起聊天。过程与私聊差不多。唯一的不同就是服
务器会将信息转发给指定群的所有成员。
5)创建分组
用户注册以后默认的好友分组只有一个。用户在执行添加分组操
作以后,客户端分将一个这个动作的信息发送给服务器端(主要是
FromClientlisten)。服务器端的 fromClientListen 接收到这个请求,会进
行数据库操作,将要添加的分组信息插入到数据库中。如果成功,则
返回这个分组的信息给客户端,否则返回错误提示信息。
3
6)创建群
用户注册以后群个数为 0。用户在执行添加群操作以后,客户端分
将一个这个动作的信息发送给服务器端(主要是 FromClientlisten)。服
务器端的 fromClientListen 接收到这个请求,会进行数据库操作,将要
添加的群信息插入到数据库中。如果成功,则返回这个群的信息给客
户端,否则返回错误提示信息。
7)查找好友并加为好友
输入要查找的用户 ID 号,客户端发送一个查询信息给服务器端,
如果找到就返回用户服务信息。打开一个用户信息显示界面,该界面
会提供一个“添加为好友”按钮,点击后可将此人加为好友。如果未
找到,弹出一个信息提示框。
8)查找群并加入群
输入要查找的群 ID 号,客户端发送一个查询信息给服务器端,如
果找到就返回用户服务信息。打开一个群信息显示界面,该界面会提
供一个“加入此群”按钮,点击后可将此人加为好友。如果未找到,
则弹出一个信息提示框。
9)文件共享
在启动文件传输服务器的共享文件功能之前,要设置它的 IP 号和
端口,如果设置不好。好友将无法下看到这些共享的文件。还有一个
重要的步骤就是添加共享文件或目录。最后启动文件共享。
10)下载文件
使用文件传输的客户端要正确配置好服务器的 IP 和端口号,以及
下载好的文件的存放目录。如果其中之一配置不好,文件下载将会失
败。设置好以后,点击“连接”按钮,如果配置正确,这时将会看到
服务器共享的文件。目前不能支持文件夹下载,当看到一个文件夹以
后,可以双击该文件夹并查看文件夹里面的文件。
2.2.2 性能分析
本系统由于采用免费的 oracle 数据库软件,连接数最多不能超过
200,所以并发访问数据库的人数不能超过 200 人。
4
2.2.3 用例图
图 2-1 系统用例图
2.2.4 时序图
客户登陆、注册时的服务器端时序图
5
图 2-2 注册、登陆时的服务端的时序图
本图说明:
服务器接每次与一个客户连接以后,就会去创建一个监听线程。通
过线程来接收客户端发送的所有数据。如果要查询数据库,监听线程
会请求获得一个数据库连接.如果数据库连接已经获得,就把连接交给
DBOperation 对象,通过此对象可以返回给监听线程必要的结果。最后
监听线程会通过 Socket 将结果返回给客户端。
2.2.5 活动图
1)用户登陆活动图
6