毕业论文-基于JAVA聊天系统设计与实现

更新时间:2024-06-22 03:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

后文附代码下载链接,代码经过调

试,可以正常使用

目 录

摘要................................................................ 1 Abstract............................................................ 2 第一章 绪论......................................................... 1

1.1 课题背景 .................................................... 1 1.2 研究现状 ................................................... 1 1.3 本文的主要工作 .............................................. 2 1.4开发平台及环境介绍........................................... 2 第二章 系统分析..................................................... 3

2.1功能要求..................................................... 3 2.2系统结构图................................................... 3 2.3 性能要求 ................................................... 4 第三章 系统设计..................................................... 6

3.1 数据库设计 .................................................. 6 3.2 服务器端软件结构 ............................................ 7 3.3 客户端软件结构 ............................................. 13 3.4 测试运行 ................................................... 16 总结............................................................... 17 参考文献........................................................... 18

西北师范大学08级计算机专业学年论文

摘 要

随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统

1

西北师范大学08级计算机专业学年论文

Abstract

With the rapid development of Internet, network chat tool has been used as an important tool for information exchange, a growing number of Internet users of all ages. At present, there are many very good chat tools, which is widely used in Netmeeting, Tencent QQ, MSN-Messager and so on. The system includes the development of a network chat server program and a network chat client program in two aspects. The former through the Socket socket establish a server, server can read, forwarded from client information, and can refresh the list of users. The latter by establish a connection with the server, to client and client information exchange. Which uses a local area network communication mechanism, through direct Thread class inheritance to create multiple threads. Development of the computer network programming to the basic knowledge, such as the TCP / IP protocol, client / server mode ( Client / Server mode), network programming design method. Network programming in the information read, send, is the use of flow to achieve information exchange, which is introduced to implement a systematic analysis of information flow, including some basic software engineering methods. Through the analysis of these cases, the LAN chat tools using Eclipse as the basic development environment and Java language preparation, first in a short period of time can build up the system application prototype, then, for the initial prototype system, revises and the improvement unceasingly, until forming the feasible system.

2

西北师范大学08级计算机专业学年论文

第一章 绪论

1.1 课题背景

随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持, 而聊天室是人们最常见, 最直接的网上交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型网站。本文所介绍的C/S聊天系统是基于开放的JAVA应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的处理客户请求,易于维护和更新,其运行所需环境及其工作流程和各个功能控件的工作原理将在本文依次介绍,并且文中提供了部分程序源代码。本文中将讨论一种基于Socket的即时通讯工具的设计与实现方法。

1.2 研究现状

即时通讯软件属于娱乐型软件,它已经是众多网民的必备软件。即时通讯软件是通过即时通讯技术来实现在线聊天、交流的软件。目前有2种架构形式,1、一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:QQ、百度HI 、Skype QQ VS GU、Gtalk、新浪UC、MSN等;2、采用B/S架构,即浏览器/服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商,典型的代表有Websitelive 、53KF、live800等。

1

西北师范大学08级计算机专业学年论文

1.3 本文的主要工作

本文主要工作是设计一个基于WINDOWS平台的即时通讯工具,然后阐述本软件的功能、并详细阐述开发本软件所用的相关技术,具体分析本软件的各个模块的功能及实现方法,说明本软件的设计思想及方法。

1.4开发平台及环境介绍

本系统采用jdk1.6平台开发,JDK(Java Development Kit)是Sun Microsystems针对Java开发员的工具。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。本系统正是采用了比较新的版本来开发。由于jdk对电脑硬件配置要求不是很高,所以只要内存在256M以上配备了windows的计算机就可以流畅的使用jdk1.6。

2

西北师范大学08级计算机专业学年论文

第二章 系统分析

2.1功能要求

(1)用户端之间的信息发送,本程序需要实现的最基本的功能 (2)在线用户主机名列表的维护。

(3)在C/S模式中,服务器与客户端是相互依赖的。在客户端启用以后,需要查看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线,则在检测一定次数以后自动退出客户端程序。在使用过程中,客户端在指定时间内未向服务器端发送信息的,服务器认为客户端下线;客户端在一定时间内未收到服务器端信息的,认为服务器已经下线,则提示用户并建议退出,在用户一定时间后没有退出的则自动关闭客户端程序。

2.2系统结构图

如图图2-1,采用三层C/S模式,使用Java语言开发,后台数据库采用Access。客户间通讯使用UDP协议,客户端与服务器之间的通讯采用TCP/IP协议。

3

西北师范大学08级计算机专业学年论文

图2-1 聊天系统结构图

2.3 性能要求

首先要求程序要可靠,可以应付种种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。

程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。

开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由

4

西北师范大学08级计算机专业学年论文

于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。

要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的联系,以免维护困难。

5

西北师范大学08级计算机专业学年论文

第三章 系统设计

3.1 数据库设计

本软件的服务器端需要用到数据库,二用户端则无需安装任何数据库。这里选择的数据库平台暂时定为Access,数据库文件为MyQQ.mdb,采用JDBC-ODBC桥连接,ODBC数据源名称也为myqq。在数据库中,共有三张表,每张表的表名以及字段描述如下:

FRIEND表

该表记录了每个用户所拥有的好友号码,字段说明如表3.1所示。

字段名 QQNUM FRIEND 表3-1 QQNUM表

该表记录了所有合法的账号,字段说明如表3-2所示。

字段名 ID QQNUM

USER_INFO表

字段名 QQNUM 类型 长整型 长度 自动 6

类型 长整型 长整型 长度 自动 自动 含义 用户账号 否 主键否 该账号好友 否 类型 长整型 长整型 长度 自动 自动 含义 用户编码 账号 主键否 是 否 含义 用户账号 主键否 是

西北师范大学08级计算机专业学年论文

NAME PASSWORD STATUS IP INFO PIC SEX EMAIL PLACE BIRTHDAY PORT

文本 文本 整型 文本 文本 文本 文本 文本 文本 文本 整型 16 10 自动 16 100 50 2 50 50 50 自动 用户名 密码 用户状态 IP地址 描述信息 头像名 性别 邮箱地址 联系地址 生日 通信端口 否 否 否 否 否 否 否 否 否 否 否 3.2 服务器端软件结构

客户与服务器的通信通过Socket(TCP/IP)的方式连接。服务器采用多线程方式满足多用户的请求,默认情况下,每个线程处理一个用户的请求。并通过创建一个ServerSocket对象监听来自客户的连接请求,默认端口为5638,然后无限循环调用accept()方法介绍客户程序的连接。服务器通过JDBC-ODBC与后台数据库连接。

服务器的主类是ServerForm,此类启动后是一个图形界面,它能完成一些功能:

启动Server;

7

西北师范大学08级计算机专业学年论文

以列表的形式显示上线用户的信息和上线的总人数;

可以将某一用户断开与服务器的连接,并释放占用的服务器资源; 设置一文本区域,显示服务器的工作日志,当程序退出时,能将这些日志写入文件中,文件名以“日期+时间”命名。

服务器端程序的功能结构如图3-1所示。 处 理 注册 新用户 处理用户登录 处理查找用户 处理好友添加 处理好友删除 处理更新信息 用户下线处理 服务器端程序

图3-1服务器端程序的功能结构示意图

服务器端程序运行界面如图3-2所示。

图3-2 服务器端程序运行界面

8

西北师范大学08级计算机专业学年论文

为了完成这些功能,需要用到下列基本方法。这里以伪代码的形式描述这些方法的基本流程。

处理注册新用户的方法: registerNewUser(){ 获得数据库连接对象 读取客户端用户的注册信息 直线SQL语句

返回注册用户的QQ号码 向客户端发送用户的QQ号码 向客户端发送结束信号 }

处理用户登录的方法: Login(){

获得数据库连接对象 读取用户名和密码

执行SQL语句并判断是否为合法用户 If(是合法用户) 注册用户的IP地址 查找好友 返回成功信息 else

9

西北师范大学08级计算机专业学年论文

返回登录失败的消息 }

处理用户查找其他用户方法: queryUser(){ 获得数据库连接对象 读取用户端发送的查找信息 执行SQL语句 If(找到用户) 返回用户的信息 else

返回错误信息 }

处理用户添加好友方法: addFriend(){ 获得数据库连接对象

结束客户端发来的客户及其好友号码 将客户和好友的号码插入点FRIEND表中 If(执行成功) 向客户端发送成功信息 else

向客户端发送失败信息 }

10

西北师范大学08级计算机专业学年论文

处理用户删除好友方法: deleteFriend(){ 获得数据库连接对象

接受客户端发来的客户及其好友的号码 执行SQL语句(在FRIEND表中删除此信息) If(执行成功) 向客户端发送成功信息 else

向客户端发送失败信息 }

处理用户更新自己信息的方法: updeteOwnInfo(){ 获得数据库连接对象 读取客户端发送的信息 将此信息写入数据库 If(执行成功) 向客户端发送成功信息 else

向客户端发送失败信息 }

处理用户下线的方法: loginOut(){

11

西北师范大学08级计算机专业学年论文

获得数据库连接对象 获得客户端号码

将用户的在线状态改为下线并清空其IP地址 If(执行成功) 向客户端发送成功信息 else

向客户端发送失败信息 }

服务器类框架

public class Server implements Runnable{ 定义套接口 定义输入输出流

public Server(Socket s,??){ 获得传递参数 创建输入输出流 }

public void run(){ while(bool){

获得客户端的输入字符串 判断字符串的命令类型 根据命令调用相应的处理方法 }

12

西北师范大学08级计算机专业学年论文

} }

3.3 客户端软件结构

客户通过Socket建立于服务器的连接。服务器建立输入输出流,然后双方通过该输入输出流来相互传递信息,一旦受到客户端的连接请求,服务器accept()方法返回一个新建的Socket对象。客户端然后向服务器发送消息,例如注册、登录、查找好友等,服务器受到来自客户的请求后,针对不同的消息处理请求,做出不同的响应。

虽然UDP协议不是可靠的协议,但是对于网络聊天程序而言,可靠性并不太重要,UDP具有通讯速度快的优点,所以客户间发送信息采用UDP协议。用户登录时,通过类DatagramPacket和DatagramSocket创建UDP包,其中包含了本地介绍端口以及发送端口,通过取得好友的IP地址向好友发送消息和接受消息。当用户通过UDP受到消息后,可以通过DatagramPacket的方法InetAddress getAddress()得到对方的IP地址,通过对好友列表比较以判断是谁并提示用户受到某某的消息,然后用户选择该用户查看消息,如果好友列表没有该人就显示受到陌生人的消息。

客户端与服务器交互的流程如图3-3所示。

13

西北师范大学08级计算机专业学年论文

服务器端

客户端 创建Socket 连接信息 发送请求类请求命令 发送信息 信息

发送完毕 完毕信号 接收信息 结果

做出处理 结束信号 返回结果 结束 停止接收 执行操数据库 接收信息 做出相应处ServerSocket 等待客户请

图3-3 客户端与服务器端交互流程

客户端的程序框架如图3-4所示。 登录模块 主界面 注册模块 客户端程序

发送 消息 添加好友 查找好友 删除好友 查看信息 更改信息 上线提示 下线提示 图3-3 客户端程序框架

登录模块

登录模块是本软件客户端执行的第一个模块。用户在界面上输入自己的账号和密码,必要时还需要输入服务器的IP地址和端口号。程序用此来与服务器建立连接,告诉服务器等去登录的账号和密码。服务器收到后,读取数据库中的信息,然后与用户输入的信息比较,如果相同,就向客户返回成功消息并将其

14

西北师范大学08级计算机专业学年论文

Status字段设为1,表示上线及注册其IP地址,否则返回错误标志。

主界面

如果登录成功,登录程序将打开主程序窗口。主程序将向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的FRIEND表,得到好友的号码后,再在USER表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,例如,头像昵称等。该界面主要有5个功能:

○1 更新功能 ○2 查看基本信息 ○3 添加好友 ○4 删除好友 ○5 聊天功能 注册模块

在登录窗口中单击“注册”按钮,就可以进入注册窗口。当服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的昵称、性别、籍贯、头像、个人资料等。接受完毕后,便与后台数据库连接,然后向数据库添加记录。如果成功,便向客户返回其QQ号码,并在数据库中注册用户的IP地址,然后更新其Status为1,即用户在线。客户收到服务器返回的信息后便打开主程序窗口,并同时开始创建UDP以便在用户之间建立联系。

15

西北师范大学08级计算机专业学年论文

3.4 测试运行

用二台机器通过路由器构成一个局域网,进行正确的网络配置,两台台机器上都安装的是WINDOWS操作系统,经过测试可正常运行。

16

西北师范大学08级计算机专业学年论文

总结

本学年论文实现了简单的实时聊天功能,经过细心的调试和排错解决了绝大部分的问题。但几乎每一个计算机程序都会有这样那样的不足,尤其是未经过精心维护的非商业软件。本聊天系统程序在调试过程中,尤其在开始初期,感觉逻辑复杂,难以控制,因此至今还有许多未能解决的缺陷。

目前本聊天系统还有待完善的功能如下: (1)没有实现文件发送功能; (2)没有实现语音通信功能; (3)没有实现视频功能。

尽管学年论文在此就完成了,但是对于上述的缺陷,本人还会不断对聊天系统进一步的完善它,期望在今后的日子里凭借自身的技术把系统做成一套功能完善的聊天系统。

因为综合性的软件对开发技术要求较高,但是限于我的知识水平,文中的不足和错误在所难免,敬请李老师指点和更正,在此我先对李老师表示谢意。

附:本文代码下载

http://download.csdn.net/detail/anjianglong2008/8690579

17

西北师范大学08级计算机专业学年论文

参考文献

[1]刘新.Java开发技术大全.北京:清华大学出版社,2009 [2]Bruce Eckel.Java编程思想.北京:机械工业出版社,2007 [3] 耿祥义.Java课程设计.北京:清华大学出版社,2005

[4] http://wenku.http://www.wodefanwen.com//view/bb073c26ccbff121dd3683a1.html,2011

18

本文来源:https://www.bwwdw.com/article/loh3.html

Top