基于Java的网络聊天工具的开发与实现毕业论文Word文档下载推荐.docx
《基于Java的网络聊天工具的开发与实现毕业论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于Java的网络聊天工具的开发与实现毕业论文Word文档下载推荐.docx(40页珍藏版)》请在冰点文库上搜索。
2.3界面需求 7
第3章系统设计 8
3.1系统功能设计 8
3.2系统总体设计 9
3.2.1系统方案设计 9
3.2.2系统功能模块图 9
3.2.3系统类图 10
3.2.4系统用例图 11
3.2.5时序图 12
3.2.4活动图 12
第4章系统实现 17
4.1数据库连接实现 17
4.2登录、注册功能实现 18
4.3聊天功能实现 20
4.4好友管理功能实现 25
4.5资源共享功能实现 30
总结 34
参考文献 35
致谢 36
第1章 绪论
1.1课题背景
现在互联网越来越发达,网络聊天工具成为人们日常交流的一种重要工具,它成本低,通信速度快,方便信息交流和资料的传递,所以开发一个界面友好、易于操作的聊天工具能较好地解决电话的单线程通信以及费用高昂等问题。
随着网络普及程度的提高,人们对于通信软件的要求越来越趋于简单操作,同步实时,以及更简单的网络传输。
系统分为两部分:
客户端和服务器端。
客户端主要实现新建用户、用户登录、好友管理和消息的收发功能以及群聊功能,客户端申请与服务器端建立连接,当客户端与服务器端建立连接通道后就可以像服务器端发送新建用户信息和登录信息,以及好友管理、信息编辑、发送和接收的功能;
服务器端主要完成建立连接、数据库操作和监听客户三大功能,服务器端建立一个ServerSocket的连接,不断侦听客户端是否建立连接或断开连接,如果有客户端申请连接就启动线程与客户端建立连接并按照客户端的请求对数据库进行操作并把结果返回给客户端。
1.2开发技术
1.2.1Java
Java是一个由Sun公司开发的新一代高级编程语言。
它可在各式各样不同机器、不同操作平台的网络环境中开发软件。
不论你使用的是哪种WEB浏览器,哪种计算机,哪种操作系统,只要WEB浏览器上面注明了“支持Java”,并且装有JAVA控件,你就可以看到生动的主页。
Java正在逐步成为Internet应用中最主要的开发语言,它彻底改变了软件开发模式,带来了自PC机以来又一次革命,为飞速发展的网络世界增添了新的动力。
(一)JAVA的主要特点
Java语言有下面一些特点:
简单、面向对象、分布式、解释执行、安全、体系结构中立、可移植、高性能、多线程以及动态性。
1.简单
Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务。
Java略去了运算符重载、多重继承等模糊的概念,且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。
2.面向对象
Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型,实现了模块化和信息隐藏;
而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。
3.分布性
Java是面向网络的语言。
通过它提供的类库可以处理TCPIP协议,用户可以通过URL地址在网络上很方便地访问其它对象。
4.安全性
用于网络、分布环境下的Java必须要防止病毒的入侵。
Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
5.体系结构中立
Java解释器生成与体系结构无关的指令,Java程序可在任意的处理器上运行。
这些指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。
6.可移植性
与平台无关的特性使Java程序可以方便地被移植到网络的不同机器上。
另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有可移植性。
7.解释执行
Java解释器直接对Java字节码进行解释执行。
字节码本身携带了许多编译时信息,使得连接过程更加简单。
8.高性能
和其它解释执行的语言如BASIC不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。
9.多线程
多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。
通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
10.动态性
Java的设计使它适合于一个不断发展的环境。
在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。
并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。
(二)丰富的类库Java提供了大量的类以满足网络化、多线程、面向对象系统的需要。
1.语言包提供的支持包括字符串处理、多线程处理、例外处理、数学函数处理等,可以用它简单地实现Java程序的运行平台。
2.实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。
3.输入输出包用统一的流模型来实现所有格式的IO,包括文件系统、网络、输入
4.低级网络包用于实现Socket编程。
5.抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件,包括窗口、菜单、滚动条、对话框等,使得Java可以移植到不同平台的机器。
6.网络包支持Internet的TCPIP协议,提供了与Internet的接口。
它支持
URL连接,WEB即时访问,并且简化了CS模型的程序设计。
1.2.2TCPIP
(1)TCPIP协议的特点:
TCPIP(TransmissionControlProtocolInternetProtocol)是传输控制协议网际协议的缩写,TCPIP是当今网络互联的核心协议。
TCPIP协议的体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。
IP协议的作用:
第一,它是网络层的协议,提供互联网上数据传输的统一格式。
第二,提供不可靠的无连接的服务。
第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。
TCPIP协议具有以下特点:
1、 协议标准具有开放性,其独立于特定的计算机硬件及操作系统,可以免费使用。
2、 统一分配网络地址,使得每个TCPIP设备在网络中都具有唯一的IP地址。
3、 实现了高层协议的标准化,能为用户提供多种可靠的服务。
(2)TCPIP协议进行传输数据传输的过程:
应用程序为了传输数据会调用TCP,将数据和对应的参数传给TCP,将TCP数据包封装在IP包内,通过网络送给目的TCP。
接收方TCP在接收到数据后通知上层应用程序,TCP将保证接收数据的正确性。
TCP调用IP接口,向TCP提供所有TCP需要的服务。
(3)端口号:
有的时候,一个IP地址不能完整的标识一台服务器,这是应为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是端口。
端口实际是一个16位长的地址,他的范围是0~65535之间,其中0~1023是熟知端口,主要是给提供服务的应用程序使用,这些端口是所有应用进程都只道的,1024~65535为一般端口,也称动态端口、连接端口,用来随时分配要求通信的客户端应用程序。
在数据传输过程中,各种服务器不断的检测分配给他的端口,一边发现要求和他通信的客户端。
1.2.3Socket
Socket,简称套接字,用于实现网络上客户和服务器之间的连接。
也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。
具体的说:
一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个Socket建立连接,客户端通过写Socket来通知服务器,以读Socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。
服务器也通过它的本地端口连接一个socket,通过读写和客户端通信。
Socket程序的工作过程:
1、建立Socket连接:
在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。
2、数据通信:
利用虚拟连接通道传送数据信息进行通道。
3、关闭:
通信结束时,再将所建的虚拟连接拆除。
具体如下
图1.1Socket套接字原理图
1.3开发工具
1.3.1Eclipse
集成开发环境(IntegratedDevelopment,简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。
就是集成了代码编写功能、分析功能、编译功能、debug功能等一体化的开发软件套。
所有具备这一特性的软件或者软件套(组)都可以叫做IDE。
Eclipse只是一个框架软件,本身不能开发程序,但它可以安装各种插件。
正是运行在Eclipse平台上的种种插件,提供了程序开发的各种功能。
同时各个领域的开发人员通过开发插件,可以构建与Eclipse环境无缝集成的工具。
Eclipse是一个非常成功的开源项目,相对比Borland公司的王牌JBuilder来说,拥有绿色软件、免费、插件多、功能强大等优点,相对于现阶段的开发来说,使用Eclipse作为开发工具是最好的选择。
Eclipse是绿色软件,其下载与安装非常简单,但是如果需要使用Eclipse来开发J2EE,为了提高开发的效率,可以下载MyEcilpse插件或者Lomboz插件,其中Myeclipse是收费软件,可以直接下载exe进行安装,而Lomboz是开源插件,其使用是完全免费的。
1.3.2StarUML
StarUML是一个开源的UML建模工具,它遵守GNUGPL开源条约,StarUML项目宣称的目标是代替大型的商业UML工具软件,如IBM的RationalRose,Borland公司的Together。
它具有如下一些特点:
l可绘制多种UML图:
用例图、类图、时序图、状态图、活动图等。
l完全免费:
StarUML是一套开放源码的软件,不仅免费自由下载,连代码都免费开放。
l可导出多种格式图片:
JPG、JPEG、BMP等格式的图片文件。
l正反向工程:
StarUML可以依据类图的内容生成Java、C++、C#代码,也能够读取Java、C++、C#代码反向生成类图。
反向工程有两个主要用途,其一是旧有的源码反转成图之后,可以构建UML模型的方式继续将新的设计添加上去;
另一项用途是想要解析源码时,可以通过反转的类图来理解,不再需要查看一行又一行的代码,这将节省大量的时间和精力。
l导入Rose文件:
StarUML可以读取RationalRose生成的文件,让原先Rose
的用户可以转而使用免费的StarUML。
第2章系统需求分析
2.1基本功能需求
1)聊天
私聊:
私聊就是两个之间聊天,即一对一。
群聊:
就是多人一起聊天,即一对多。
2)好友管理
查找好友:
根据好友IP查找好友信息
添加好友:
根据查找到的好友信息,将其添加为自己的好友。
删除好友:
在好友列表中将好友删除。
备注姓名:
对好友进行姓名备注,方便自己记忆。
3)资源共享
设置共享资源路径,添加共享文件或目录,启动文件共享。
2.2性能需求
支持网络通信,实现全方位、多功能的信息通信功能。
尽量减少服务器的开销及数据传送负担,提高数据利用效率和数据传送效率,避免无效数据的传输。
2.3界面需求
界面设计美观,人机交互界面友好,聊天对话框线程支持,实现无限制数量用户聊天,服务器端无特殊要求。
本应用程序需要有4个窗口来展示用户需要的信息和列表,分别是系统主窗口、用户列表窗口、通信窗口和系统设置窗口。
根据已有的需求信息和功能分析,设计的系统主窗口具有用户基本信息、当前时间、好友列表等显示功能。
其中,好友列表初始显示在主窗口中。
通信窗口包括对方用户名、对方形象、对方主机信息和IP信息。
系统设置窗口主要包括设置共享资源的路径以及系统升级路径(暂未实现)、系统公告路径(暂未实现)等。
第3章系统设计
3.1系统功能设计
1)用户注册
服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的昵称,密码,性别,头像,个人资料等,接受完毕后,便通过后台数据库连接,然后向数据库添加记录。
客户收到服务器返回的信息后,便打开主登陆窗口。
2)登陆
在客户端,用户输入其用户名和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始读取数据库,然后与用户输入的信息比较,如果成功,便打开主程序窗口。
然后客户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的表,通过读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个矢量(Vector)用以存储好友的呢称,IP号。
3)私聊
私聊就是两个聊天。
客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。
4)群聊
群聊,就是多人一起聊天。
过程与私聊差不多。
唯一的不同就是服务器会将信息转发给指定的一到多个成员。
7)查找、添加、删除好友以及备注姓名
输入要查找的用户IP号,客户端发送一个查询信息给服务器端,如果找到就返回用户服务信息。
打开一个用户信息显示界面,点击“添加为好友”菜单项后可将此人加为好友。
如果未找到,弹出一个信息提示框。
在好友列表中打开用户信息显示界面,点击“删除该好友”菜单项后可将此人删除,若点击“备注姓名”则可以对好友进行姓名备注,分别记忆以及管理。
9)资源共享
在共享功能之前,要设置好共享资源路径,如果设置不好,好友将无法看到这些共享的文件或网络资源。
还有一个重要的步骤就是添加共享文件或目录。
最后启动资源共享。
3.2系统总体设计
3.2.1系统方案设计
图3.1系统方案设计图
3.2.2系统功能模块图
本系统主要由由三个子系统组成:
1)聊天子系统;
2)好友管理子系统;
3)资源共享子系统。
聊天系统的功能主要有:
1)私聊;
2)群聊。
好友管理系统的功能有:
1)查找好友;
2)添加好友;
3)删除好友;
4)备注姓名。
资源共享系统的功能主要是访问好友的共享资源。
示意图如下:
图 3.2系统功能模块图
3.2.3系统类图
Socket
Thread
发送消息和接收消息
监听服务器是否发送数据
Client
-serverlisten:
FromServerListen
-in:
ObjectInputStream
-out:
ObjectOutputStream
-mainframe:
MainFrame
+send(inpacket:
void):
void()
Fromserverlisten
-client:
Client
+run():
*
主显示界面
1
MainFrame
-client:
-userinto:
JChatUserInfo
-userfriends:
JChatUserclass
-friends:
Map
* +getFriends():
Map()
+setFriends():
void()
用户个人信息
JChatUserClass
-id:
int
-account:
图3.3系统类图
Socket:
非自定义类,.Socket。
Thread:
非自定义类,java.util.Thread。
Client:
负责具体发送和接收数据。
FromServerListen:
监听服务器是否在发送数据。
MainFrame系统的主界面(包括用户列表等)。
QQUserInfo包括用户的好友列表信息等。
QQUserClass包括用户的个人信息,如IP、用户名等。
3.2.4系统用例图
资源共享
访问共享资源
注册
群聊
登录
聊天
用户
私聊
查找好友
添加好友
好友管理
删除好友
备注姓名
图3.4系统用例图
本图说明:
用户注册、登录后,可以操作以下三个功能模块:
即聊天功能,好友管理功能以及资源共享功能。
其中,聊天功能又分为私聊和群聊;
好友管理分为查找好友、添加好友、删除好友以及备注好友姓名;
资源共享主要是用户可以分为好友的共享资源。
3.2.5时序图
客户登录、注册时的服务器端时序图
服务器
客户端监听
池管理
数据库操作
创建一个监听线程
获得一个数据库连接
返回数据库连接
操作数据库
返回操作结果
图3.5登录、注册时序图
本图说明:
服务器接每次与一个客户连接以后,就会去创建一个监听线程。
通过线程来接收客户端发送的所有数据。
如果要查询数据库