基于java聊天系统设计与实现大学本科毕业论文_第1页
基于java聊天系统设计与实现大学本科毕业论文_第2页
基于java聊天系统设计与实现大学本科毕业论文_第3页
基于java聊天系统设计与实现大学本科毕业论文_第4页
基于java聊天系统设计与实现大学本科毕业论文_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录摘要 第一章绪论1.1课题背景随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持,而聊天室是人们最常见,最直接的网上交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型网站。本文所介绍的C/S聊天系统是基于开放的JAVA应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的处理客户请求,易于维护和更新,其运行所需环境及其工作流程和各个功能控件的工作原理将在本文依次介绍,并且文中提供了部分程序源代码。本文中将讨论一种基于Socket的即时通讯工具的设计与实现方法。1.2研究现状即时通讯软件属于娱乐型软件,它已经是众多网民的必备软件。即时通讯软件是通过即时通讯技术来实现在线聊天、交流的软件。目前有2种架构形式,1、一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:QQ、百度HI、SkypeQQVSGU、Gtalk、新浪UC、MSN等;2、采用B/S架构,即浏览器/服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商,典型的代表有Websitelive、53KF、live800等。1.3本文的主要工作本文主要工作是设计一个基于WINDOWS平台的即时通讯工具,然后阐述本软件的功能、并详细阐述开发本软件所用的相关技术,具体分析本软件的各个模块的功能及实现方法,说明本软件的设计思想及方法。1.4开发平台及环境介绍本系统采用jdk1.6平台开发,JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的工具。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。本系统正是采用了比较新的版本来开发。由于jdk对电脑硬件配置要求不是很高,所以只要内存在256M以上配备了windows的计算机就可以流畅的使用jdk1.6。第二章系统分析2.1功能要求(1)用户端之间的信息发送,本程序需要实现的最基本的功能(2)在线用户主机名列表的维护。(3)在C/S模式中,服务器与客户端是相互依赖的。在客户端启用以后,需要查看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线,则在检测一定次数以后自动退出客户端程序。在使用过程中,客户端在指定时间内未向服务器端发送信息的,服务器认为客户端下线;客户端在一定时间内未收到服务器端信息的,认为服务器已经下线,则提示用户并建议退出,在用户一定时间后没有退出的则自动关闭客户端程序。2.2系统结构图如图图2-1,采用三层C/S模式,使用Java语言开发,后台数据库采用Access。客户间通讯使用UDP协议,客户端与服务器之间的通讯采用TCP/IP协议。图2-1聊天系统结构图2.3性能要求首先要求程序要可靠,可以应付种种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的联系,以免维护困难。第三章系统设计3.1数据库设计本软件的服务器端需要用到数据库,二用户端则无需安装任何数据库。这里选择的数据库平台暂时定为Access,数据库文件为MyQQ.mdb,采用JDBC-ODBC桥连接,ODBC数据源名称也为myqq。在数据库中,共有三张表,每张表的表名以及字段描述如下:FRIEND表该表记录了每个用户所拥有的好友号码,字段说明如表3.1所示。字段名类型长度含义主键否QQNUM长整型自动用户账号否FRIEND长整型自动该账号好友否表3-1QQNUM表该表记录了所有合法的账号,字段说明如表3-2所示。字段名类型长度含义主键否ID长整型自动用户编码是QQNUM长整型自动账号否USER_INFO表字段名类型长度含义主键否QQNUM长整型自动用户账号是NAME文本16用户名否PASSWORD文本10密码否STATUS整型自动用户状态否IP文本16IP地址否INFO文本100描述信息否PIC文本50头像名否SEX文本2性别否EMAIL文本50邮箱地址否PLACE文本50联系地址否BIRTHDAY文本50生日否PORT整型自动通信端口否3.2服务器端软件结构客户与服务器的通信通过Socket(TCP/IP)的方式连接。服务器采用多线程方式满足多用户的请求,默认情况下,每个线程处理一个用户的请求。并通过创建一个ServerSocket对象监听来自客户的连接请求,默认端口为5638,然后无限循环调用accept()方法介绍客户程序的连接。服务器通过JDBC-ODBC与后台数据库连接。服务器的主类是ServerForm,此类启动后是一个图形界面,它能完成一些功能:启动Server;以列表的形式显示上线用户的信息和上线的总人数;可以将某一用户断开与服务器的连接,并释放占用的服务器资源;设置一文本区域,显示服务器的工作日志,当程序退出时,能将这些日志写入文件中,文件名以“日期+时间”命名。服务器端程序的功能结构如图3-1所示。服务器端程序用户下线处理处理好友删除处理更新信息处理好友添加处理查找用户处理用户登录处理注册新用户服务器端程序用户下线处理处理好友删除处理更新信息处理好友添加处理查找用户处理用户登录处理注册新用户图3-1服务器端程序的功能结构示意图服务器端程序运行界面如图3-2所示。图3-2服务器端程序运行界面为了完成这些功能,需要用到下列基本方法。这里以伪代码的形式描述这些方法的基本流程。处理注册新用户的方法:registerNewUser(){获得数据库连接对象读取客户端用户的注册信息直线SQL语句返回注册用户的QQ号码向客户端发送用户的QQ号码向客户端发送结束信号}处理用户登录的方法:Login(){获得数据库连接对象读取用户名和密码执行SQL语句并判断是否为合法用户If(是合法用户)注册用户的IP地址查找好友返回成功信息else返回登录失败的消息}处理用户查找其他用户方法:queryUser(){获得数据库连接对象读取用户端发送的查找信息执行SQL语句If(找到用户)返回用户的信息else返回错误信息}处理用户添加好友方法:addFriend(){获得数据库连接对象结束客户端发来的客户及其好友号码将客户和好友的号码插入点FRIEND表中If(执行成功)向客户端发送成功信息else向客户端发送失败信息}处理用户删除好友方法:deleteFriend(){获得数据库连接对象接受客户端发来的客户及其好友的号码执行SQL语句(在FRIEND表中删除此信息)If(执行成功)向客户端发送成功信息else向客户端发送失败信息}处理用户更新自己信息的方法:updeteOwnInfo(){获得数据库连接对象读取客户端发送的信息将此信息写入数据库If(执行成功)向客户端发送成功信息else向客户端发送失败信息}处理用户下线的方法:loginOut(){获得数据库连接对象获得客户端号码将用户的在线状态改为下线并清空其IP地址If(执行成功)向客户端发送成功信息else向客户端发送失败信息}服务器类框架publicclassServerimplementsRunnable{定义套接口定义输入输出流publicServer(Sockets,……){获得传递参数创建输入输出流}publicvoidrun(){while(bool){获得客户端的输入字符串判断字符串的命令类型根据命令调用相应的处理方法}}}3.3客户端软件结构客户通过Socket建立于服务器的连接。服务器建立输入输出流,然后双方通过该输入输出流来相互传递信息,一旦受到客户端的连接请求,服务器accept()方法返回一个新建的Socket对象。客户端然后向服务器发送消息,例如注册、登录、查找好友等,服务器受到来自客户的请求后,针对不同的消息处理请求,做出不同的响应。虽然UDP协议不是可靠的协议,但是对于网络聊天程序而言,可靠性并不太重要,UDP具有通讯速度快的优点,所以客户间发送信息采用UDP协议。用户登录时,通过类DatagramPacket和DatagramSocket创建UDP包,其中包含了本地介绍端口以及发送端口,通过取得好友的IP地址向好友发送消息和接受消息。当用户通过UDP受到消息后,可以通过DatagramPacket的方法InetAddressgetAddress()得到对方的IP地址,通过对好友列表比较以判断是谁并提示用户受到某某的消息,然后用户选择该用户查看消息,如果好友列表没有该人就显示受到陌生人的消息。客户端与服务器交互的流程如图3-3所示。创建Socket创建SocketServerSocket发送请求类型发送信息发送完毕接收信息做出处理等待客户请求做出相应处理接收信息停止接收返回结果结束执行操作数据库连接信息请求命令信息完毕信号结果结束信号客户端服务器端图3-3客户端与服务器端交互流程客户端的程序框架如图3-4所示。客户端程序客户端程序登录模块主界面注册模块发送消息添加好友查找好友删除好友查看信息更改信息上线提示下线提示图3-3客户端程序框架登录模块登录模块是本软件客户端执行的第一个模块。用户在界面上输入自己的账号和密码,必要时还需要输入服务器的IP地址和端口号。程序用此来与服务器建立连接,告诉服务器等去登录的账号和密码。服务器收到后,读取数据库中的信息,然后与用户输入的信息比较,如果相同,就向客户返回成功消息并将其Status字段设为1,表示上线及注册其IP地址,否则返回错误标志。主界面如果登录成功,登录程序将打开主程序窗口。主程序将向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的FRIEND表,得到好友的号码后,再在USER表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,例如,头像昵称等。该界面主要有5个功能:eq\o\ac(○,1)更新功能eq\o\ac(○,2)查看基本信息eq\o\ac(○,3)添加好友eq\o\ac(○,4)删除好友eq\o\ac(○,5)聊天功能注册模块在登录窗口中单击“注册”按钮,就可以进入注册窗口。当服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的昵称、性别、籍贯、头像、个人资料等。接受完毕后,便与后台数据库连接,然后向数据库添加记录。如果成功,便向客户返回其QQ号码,并在数据库中注册用户的IP地址,然后更新其Status为1,即用户在线。客户收到服务器返回的信息后便打开主程序窗口,并同时开始创建UDP以便在用户之间建立联系。3.4测试运行用二台机器通过路由器构成一个局域网,进行正确的网络配置,两台台机器上都安装的是WINDOWS操作系统,经过测试可正常运行。总结本学年论文实现了简单的实时聊天功能,经过细心的调试和排错解决了绝大部分的问题。但几乎每一个计算机程序都会有这样那样的不足,尤其是未经过精心维护的非商业软件。本聊天系统程序在调试过程中,尤其在开始初期,感觉逻辑复杂,难以控制,因此至今还有许多未能解决的缺陷。目前本聊天系统还有待完善的功能如下:(1)没有实现文件发送功能;(2)没有实现语音通信功能;(3)没有实现视频功能。尽管学年论文在此就完成了,但是对于上述的缺陷,本人还会不断对聊天系统进一步的完善它,期望在今后的日子里凭借自身的技术把系统做成一套功能完善的聊天系统。因为综合性的软件对开发技术要求较高,但是限于我的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论