局域网即时通讯软件设计与实现毕业论文.docx
《局域网即时通讯软件设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《局域网即时通讯软件设计与实现毕业论文.docx(57页珍藏版)》请在冰豆网上搜索。
![局域网即时通讯软件设计与实现毕业论文.docx](https://file1.bdocx.com/fileroot1/2023-4/19/1cf071df-b116-4a77-8f59-3f7f90e5dc54/1cf071df-b116-4a77-8f59-3f7f90e5dc541.gif)
局域网即时通讯软件设计与实现毕业论文
摘要
即时通信在互联网领域的应用取得了巨大的成功,但在学校﹑企业内部的应用仍远未普及。
鉴于即时通讯作为一项有广泛应用价值的技术框架,在逐步适应企业网络﹑教育网络的应用特点后,局域网即时通信必将取得和电子邮件一样的普及效果。
该系统使用Myeclipse作为开发平台﹑MysqL数据库存储用户信息和聊天记录,用套接字连接客户端和服务器,用数据包套接字发送消息。
本系统采用C/S模式构建,由客户端和服务器组成。
客户端只要填写服务器的IP地址和通信端口号,并通过所分配的账号,就可以登陆和使用。
服务器与MysqL数据库可部署在同一网段的任一节点上,通过接受客户端不同请求而对数据库进行增加﹑删除、修改、查找的操作,这样就可以方便的进行维护并前保证了同一局域网信息的安全和网络资源的充分利用,并且最大程度的保证了数据库的安全性。
使用该系统可进行一般的文字交流,添加好友等功能。
关键词:
Myeclipse;Socket;多线程;MysqL数据库;TCP/IP协议
ABSTRACT
InstantmessagingapplicationsontheInternetwereagreatsuccess,butinschools,enterprisesarestillfarfromuniversalinapplication.Inviewofinstantmessagingapplicationsasthevalueofabroadtechnicalframework,andgraduallyadapttothecorporatenetwork,theapplicationofthecharacteristicsoftheeducationnetwork,theLANaccesstoinstantmessagingande-mailwillbethesameuniversaleffect.TheintroductionofthesystemMyeclipseasadevelopmentplatform,Mysqldatabasestoringuserinformationandchatwithasocketconnectionclientandserver,andsendamessagepacketsocket.ThesystemusesC/Smodeofconstruction,fromtheclientandserver-sidecomponent.SimplyfillouttheclientserverIPaddressandcommunicationsportnumber,andthroughthedistributionoftheaccount,youcanloginanduse.Mysqldatabaseserverandcanbedeployedinthesamenetworksegmentatanynode,byreceivingtherequestoftheclientdefferentadditionsanddeletionstothedatabasesearchoperation,Thiscanbeconvenientformaintenanceandtoensurethatthesamelocalareanetworkinformationsecurityandmakefulluseofnetworkresourcesandensuremaximumsafetyofthedatabase.Thesystemcanbeusedforgeneralexchangoftext,addfriendfunctions.
Keywords:
Myeclipse;Socket;Thread;MysqlDatabasse;TCP/IP
前言1...
第1章绪论2
1.1课题背景及意义2...
1.2课题现状2...
1.3课题目标与内容3...
第2章系统开发环境和关键技术4..
2.1开发环境4...
2.2关键技术4...
2.2.1Java4
2.2.2Myeclipse与MysqL6...
2.2.3JavaSocket网络编程接口7..
2.2.4多线程开发技术7...
2.2.5TCP/IP﹑UDP协议8...
2.2.6Client/Server结构(客户端/服务器模式)9.
第3章系统分析与设计1..0.
3.1可行性分析1..0.
3.1.1经济可行性1..0.
3.1.2技术可行性1..0.
3.1.3法律可行性1..1.
3.2系统分析1..1.
3.2.1系统需求1..1..
3.2.2需求分析1..2..
3.3系统设计2..1.
3.3.1设计原则及一般要求2..1.
3.3.2概要设计2..1..
3.3.3功能设计2..1..
3.3.4工作流程2..5..
3.3.5数据库设计2..5.
第4章系统实现3..0.
4.1服务器端设计实现3..0.
4.1.1服务器端模块3..0.
4.2客户端设计实现3..0.
4.2.1客户端登陆模块3..0.
4.2.2注册模块3..1..
4.2.3登陆主界面3..3.
4.2.4文字传送3..3..
4.2.5查找好友3..4.
4.2.6添加好友3..5.
4.3系统功能特点3..5.
第5章难点及对策3..6.
总结与展望3..7..
致谢3..9..
参考文献4..0..
附录程序源代码4..1..
前言
随着电脑和互联网的普及,网络聊天已经成为人们工作生活中传递信息,交流感情的重要工具。
网络的聊天软件种类繁多,如QQ﹑MSN等,实现了随时随地上网聊天,给人们带来了很大的方便。
但是这些聊天软件也存在以下不足:
用户必须连接Internet;
用户再工作时容易很沉迷于网络聊天。
为了方便单位企业内部的信息交流,减少不必要的财力和人力资源浪费,开发一个局域网聊天软件是非常必要的。
现在,多渠道的信息源,网络化的数据分布,快键医用的交互操作,智能化的分析决策等特点越来越成为衡量聊天软件的关键,因此,本人开发一个局域网聊天软件,此聊天软件是基于Java语言运行于Windows平台上,利用的技术主要是Socket通信和多线程技术,使用MySqL作为数据库管理。
为实现和方便客户端间通信,在客户端进行了人性化的界面设计,用户可以注册号码,登陆界面可选择是否保存密码,具有添加分组、添加好友功能等。
第1章对本课题的背景及意义,课题现状,课题内容与目标进行了深入的阐述
第2章介绍了系统的开发环境和关键技术,例如Socket编程技术,多线程开发技术等。
第3章是系统分析与设计。
将对系统进行需求分析,对组成系统的功能模块进行划分,对每个模块将要实现的功能进行阐述和说明。
对系统的结构进行设计,设计数据库。
第4章是系统实现,分别介绍了服务器端和客户端每个功能的执行过程。
第5章介绍系统开发中遇到的难点及相应对策。
最后,将对本设计进行归纳总结,全面阐述本次设计中的体会。
第1章绪论
1.1课题背景及意义近年来,随着全球信息化进程的不断发展,网络也在飞速发展。
出于高效,快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。
在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。
然而,随着企业规模的扩大,业务量的增加,企业内部的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,避免企业内部机密通过Internet泄露到外部。
为了解决上述矛盾,人们提出了开发局域网聊天软件的构想,通过局域网聊天软件,企业员工可以随时的进行即时信息传递﹑召开网络会议等,有利于提高工作信息效率,同时又保护了企业内部信息的安全性。
本系统采用基于Socket的局域网通信工具的设计与实现的方法。
基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好﹑安全﹑快速地通信机制。
它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。
基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信﹑教学﹑讨论等应用中都具有一定的使用价值。
它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。
基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育﹑数据影音传输等,拥有广泛的应用前景
1.2课题现状
基于局域网的即时通信工具,实际上是互联网即时通讯工具的一个小规模版本,广
域网上的即时通讯工具,如今一般采用UDP或者TCP协议体系来实现,开发技术已经
比较成熟,比如较早的ICQ﹑MSNMessenger﹑Yahoo。
除了这些国外开发的产品,还有
国产的有名的QQ,新浪UC﹑LAVA-LAVA等,这些工具统统都实现了广域网上的即时
通信,实现了即时聊天,以及文件传输的主要功能,尽管都是即时通信,但是也各有各
的特色。
比如ICQ的巨大客户群,MSN的个性化表情,YSHOO通的易操作性等。
而
QQ也具有一个相当方便的屏幕截图功能,另外就是,所有上述软件都实现了网络即时
的视频,语音聊天功能。
这些软件,在使用方面各有特色,在实现方面也各有所长,但
基于这产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是
兰州交通大学毕业设计(论文)
它在大的方面无非就是利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者
UDP协议的软件产品。
1.3课题目标与内容本课题主要研究的是局域网即时聊天软件,此聊天软件分为服务器程序和客户端程序,本课题的目标是能实现用户在客户端与服务器端﹑客户端与客户端传递文字信息主要研究开发内容是:
熟悉Java和MySqL服务器的配置,搭配系统开发平台,探索在此开发平台下,利用Socket编程技术,多线程开发技术,TCP,UDP协议等进行局域网聊天软件的实际开发。
主要功能有:
◆用户注册
◆用户登录
◆添加分组
◆删除分组
◆添加好友
◆删除好友
◆移动好友
◆即时通信﹑文字传送
◆文件及文件夹发送
◆发送表情
◆字体设置
◆头像更改
◆查找好友
实现技术:
◆Myeclipse6.5
◆Mysq数据库
第2章系统开发环境和关键技术
2.1开发环境通讯软件是一款聊天软件,采用目前国际上比较流行的Myeclipse开发模式开发,因此,该软件系统具有极大的灵活性和可扩展性。
1.服务器端硬件环境:
CPU:
奔腾PentiumⅣ系列,主频1G以上硬盘:
20G以上剩余空间内存:
1G/2G以上
2.客户端硬件环境:
CPU:
PIII450/133MHz以上
硬盘:
500M以上剩余空间内存:
512M以上
3.软件环境:
Microsoft视窗系列操作系统(Windows2000以上)
Myeclipse6.5
JDK1.5
后台数据库MySqL开发语言Java
2.2关键技术
2.2.1Java
1.Java的定义:
Java是一种简单的、面向对象的、分布式的、解释的、键壮的、安全的、结构的、中立的、可移植的、性能很优异的、多线程的、动态的语言。
Java的开发环境有不同的版本,如sun公司的JavaDevelopersKit,简称JDK。
后来微软公司推出了支持Java规范的MicrosoftVisualJ++Java开发环境,简称VJ++。
2.Java的特点:
⑴.平台无关性
平台无关性是指Java能运行于不同的平台。
Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。
使用Java编写的程序能在世界范围内共享。
Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。
⑵.安全性
Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。
Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。
Java对程序提供了安全管理器,防止程序的非法访问。
⑶.面向对象
Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。
类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。
程序员只需把主要精力用在类和接口的设计和应用上。
Java提供了众多的一般对象的类,通过继承即可使用父类的方法。
在Java中,类
的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。
Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。
⑷.分布式
Java建立在扩展TCP/IP网络平台上。
库函数提供了用HTTP和FTP协议传送和接受信息的方法。
这使得程序员使用网络上的文件和使用本机文件一样容易。
⑸.健壮性
Java致力于检查程序在编译和运行时的错误。
类型检查帮助检查出许多开发早期出现的错误。
Java自己操纵内存减少了内存出错的可能性。
Java还实现了真数组,避免了覆盖数据的可能。
这些功能特征大大提高了开发Java应用程序的周期。
Java提供:
Null指针检测、数组边界检测、异常出口、Bytecode校验。
3.Java与C/C++语言
Java提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。
C++安全性不好,但C和C++被大家接受,所以Java设计成C++形式,让大家很容易学习。
Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。
Java去掉了以下几个C和C++功能:
指针运算
结构
typedefs
#define
需要释放内存
这将减少了平常出错的50%。
而且,Java很小,整个解释器只需215K的RAM。
面向对象:
Java实现了C++的基本面向对象技术并有一些增强,(为了语言简单,删除了一些功能)。
Java处理数据方式和用对象接口处理对象数据方式一样。
2.2.2Myeclipse与MysqL
1.Myeclipse
MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。
在结构上,MyEclipse的特征可以被分为7类:
⑴.J2EE模型
⑵.WEB开发工具
⑶.EJB开发工具
⑷.应用程序服务器的连接器
⑸.J2EE项目部署服务
⑹.数据库服务
⑺.MyEclipse整合帮助
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。
MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任意模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。
2.MysqL
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购。
MySQL被广泛地应用在Internet上的中小型网站中。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
如雅虎、Google公司、诺基亚公司、XX等公司就采用了MySQL数据库。
MySQL数据库可以称得上是目前运行速度最快的SQL语言数据库。
除了具有许多其它数据库所不具备的功能和选择之
外,MySQL数据库是一种完全免费的产品。
MySQL数据库主要有以下特点。
⑴可移植性
⑵可扩展性和灵活性
⑶强大的数据保护功能
⑷支持大型数据库
⑸超强的稳定性
⑹强大的查询功能
2.2.3JavaSocket网络编程接口
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。
应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
以J2SDK-1.3为例,Socket和ServerSocket类库是位于包中。
ServerSocket用于服务器端,Socket是建立网络连接时使用的。
在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。
对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。
不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类来完成的。
重要的SocketAPI:
.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。
.Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。
"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。
.getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例,。
.getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。
注意:
其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
2.2.4多线程开发技术
多线程在构建大型系统的时候是需要重点关注的一个重要方面,特别是在效率(系
统跑的多块?
)和性能(系统工作正常?
)之间做一个权衡的时候。
恰当的使用线程可以极大的提高系统性能。
使用多线程的好处有以下几点:
1.使用线程可以把占据长时间的程序中的任务放到后台去处理;
2.用户界面可以更加吸引人,这样比如用户点击了一个按钮区触发某些事件的处理,可以弹出一个进度条来显示处理的进度;
3.程序的运行速度可能加快;
4.在一些等待的任务实现上如用户输入,文件读写和网络收发数据等线程就比较有用了。
在这种情况下我们可以释放一些珍贵的资源如内存占用等等。
2.2.5TCP/IP﹑UDP协议
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。
IP层接收由更底层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。
IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。
IP数据包中包含有发送它的主机地址(源地址)和接收它的主机的地址(目的地址)。
如果IP数据包中有已经封装好的TCP数据包,那么IP将把他们向'上'传送到TCP层。
TCP将包排序并进行错误检查,同时实现虚电路间的连接。
TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被顺序,而损坏的包可以被重传。
UDP与TCP位于同一层,但对于数据包的顺序错误或重发。
因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务。
TCP和UDP服务通常有一个客户/服务器的关系。
两个系统间的多重连接是这样互相确认并协调一致的,TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:
源IP地址发送包的IP地址。
目的IP地址,接收包的IP地址。
源端口源系统上的连接的端口。
目的端口目的系统上的连接的端口。
端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。
一个端口对应一个16比特的数。
服务进程通常使用一个固定的端口,例如,SMTP使用25。
这些端口号是“广为人知”的,因为在建立于特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。
2.2.6Client/Server结构(客户端/服务器模式)
Client/Server结构(C/S结构)是大家熟知的客户机和服务器结构。
通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server形式的两层结构。
C/S结构软件分为客户机和服务器两层,客户机不是毫无运算能力的输入﹑输出设备,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。
由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。
C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。
对应的优点就是客户端响应速度快。
缺点主要有以下几个:
只适用于局域网。
而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要