简单的即时通讯工具的设计与开发资料.docx
《简单的即时通讯工具的设计与开发资料.docx》由会员分享,可在线阅读,更多相关《简单的即时通讯工具的设计与开发资料.docx(35页珍藏版)》请在冰豆网上搜索。
简单的即时通讯工具的设计与开发资料
简单的即时通讯工具的设计
与开发
论文作者姓名:
申请学位专业:
申请学位类别:
指导教师姓名(职称):
论文提交日期:
简单的即时通讯工具的设计与开发
摘要
即时通讯(InstantMessaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。
Java是当前比较流行的开发语言之一,它有着自己的易用特点与性能优势,比如跨平台、安全性、多线程、网络Socket编程、数据流概念等方面,因此通过对开源即时通讯LinuxQQ的研究和分析,基于Java语言和J2EE规范设计了一个即时通讯工具JICQ(JavaforIseekyou),并对其体系结构、构成模块及系统关键技术进行了分析与设计。
在系统设计与建模过程中,使用了UML和面向对象的分析、设计方法,并使用Rose作为建模工具;本系统基于j2se1.5,j2ee1.4,使用Eclipse等作为开发工具,在开发过程中用到了时下流行的重构开发方法,优化了系统的设计。
力图使系统具有安全、高效、实用、支持在不同系统平台运行等特点。
关键词:
即时通讯;多线程;SOCKET编程;JSP
DesignandDevelopmentofaSimpleInstantCommunicationTool
Abstract
InstantMessageiscurrentlythemostpopularwaytocommunicateontheInternet,sovariousInstantMessagingsoftwarearecontinuouslyappearing;Serviceprovidersoffermoreandmorecommunicationservicenowadays.Javaprogramminglanguage(Java2StandardEdition)isoneofpopularprogramminglanguages.Withitsfeaturesofcross-platform,security,multi-threadedcapability,SocketProgramming,dataflowconceptsandsoon,Javahasitsowndistinctiveandfunctionaladvantages.Therefore,basedontheresearchandanalysisofLinuxQQ,withtheJavalanguageandJ2EE,thispaperdesignsaninstantmessenger—JICQ(JavaforIseekyou),andthenanalyzesitsarchitecture,modules,aswellasitskeytechnologies.Duringthedesignandmodelingprocessofinstantmessengersystem,theUMLandmethodofobject-orientedanalysisanddesignareused.Furthermore,themodelingtoolofRoseisincluded.Basedonthesystemj2se1.5,j2ee1.4,theEclipsedevelopmenttoolinthedevelopmentprocess,andrefactoringdevelopmentmethod,thesystemdesignisoptimized.Duetothesefactors,thesystemissafe,efficientandpracticalindifferentoperatingsystemplatforms.
Keywords:
instantmessage;multithreaded;socketprogram;JSP
论文总页数:
30页
1引言1
1.1项目开发背景1
1.1.1项目背景1
1.1.2技术背景1
1.2该系统设计的意义2
2相关理论及基础技术与开发平台2
2.1即时通讯应用工作原理分析2
2.2所用技术3
2.3工具及开发平台4
2.4系统配置要求5
3系统体系结构的设计5
3.1需求描述5
3.2系统架构设计6
3.3系统的总体功能设计7
3.3.1总体功能设计7
3.3.2注册模块设计8
3.3.3登录模块设计10
3.3.4用户间交互模块设计12
3.4数据库设计14
3.4.1数据库物理模型14
3.4.2数据字典15
4系统实现16
4.1网络通讯编码实现16
4.1.1聊天客户端部分代码16
4.1.2服务器端监听与转发消息代码17
4.1.3服务端单线程上线处理代码18
4.2系统运行的效果图20
4.2.1登录界面20
4.2.2主界面20
4.2.3群聊天界面21
4.2.4好友聊天界面22
4.2.5好友查找界面23
4.3注册模块的实现24
4.3.1数据库连接24
4.3.2字符编码过滤器的核心代码24
4.4注册模块运行效果图25
4.4.1主页面25
4.4.2注册页面25
5系统测试与运行26
结论27
参考文献28
致谢29
声明30
1引言
1.1项目开发背景
1.1.1项目背景
“即时通信产品”最早的创始人是三个以色列青年,是他们在1996年做出来的,取名叫ICQ(Iseekyou)。
随后,腾迅QQ抓住IM的大好机遇,在中国迅速崛起并垄断即时通讯市场。
自从腾迅的QQ在中国即时通讯行业垄断后,即时通讯的产品在IT行业可谓雨后春笋,层出不穷,目前,Windows平台方面的即时通讯已经很多,但是其他系统比如Linux平台,虽然有类似QQ方面的一些产品,比如LinuxQQ,Lunaqq,但数量毕竟不多且功能界面等都还不是很理想,鉴于此种情况,我们开发了基于Java语言的即时通信系统(JICQ),该系统是以J2SE(Java2StandardEdition)语言实现的网络即时通信工具,包括服务器端和客户端,可以在企业内部网络和互联网上运行,同时具有Java应用的跨平台特性,方便运行在各个系统之上。
该系统具有相对比较漂亮的界面以及类似于QQ的很多功能,比如可以和好友进行交流以及离线发送与好友管理、可以加入不同的群,即时发送、即时回复等功能。
1.1.2技术背景
技术上采用sun公司的java语言,该语言有很多有点,比如多线程、网络流概念、异常捕获处理、安全性以及速度与性能等方面,并且具有可以一次编写、到处运行的跨平台优点。
多线程:
多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立,线程又称为轻量级进程,多线程技术允许你在一个应用程序中启动多个执行轻量程序,使多段程序同时竞争CPU资源,从而提高系统效率。
而对于网络通讯工具来说,多线程的特性是必须的,不仅是为了效率,而且可以实现同时处理多个请求。
网络流:
java中的网络通讯以及文件的读取都是以一种流的概念来理解的,这样,网络上数据的传输其实就等同于看成一台机器上文件的读取,有利于理解与编写运用程序,java类库中提供了丰富的IO流类资源以及网络编程类资源,软件开发人员可以很方便的编写网络应用程序。
例外处理:
Java通过面向对象的方法来处理例外。
在一个方法的运行过程中,如果发生了例外,则这个方法生成代表该例外的一个对象,并把它交给运行时系统,运行时系统寻找相应的代码来处理这一例外。
我们把生成例外对象并把它提交给运行时系统的过程称为抛弃(throw)一个例外。
运行时系统在方法的调用栈中查找,从生成例外的方法开始进行回朔,直到找到包含相应例外处理的方法为止,这一个过程称为捕获(catch)一个例外。
所以,java的例外处理使非常方便的。
跨平台:
Java语言的一个非常重要的特点就是与平台的无关性。
而使用Java虚拟机是实现这一特点的关键。
一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。
而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。
Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
1.2该系统设计的意义
伴随着当今互联网迅速发展,网上通讯成为一种必不可少的通讯习惯,该系统的设计就是为了实现在互联网上的即时通讯,它是利用当今最为流行的java编程语言来实现即时通讯工具的雏形,同时在系统开发过程中所用的都是java常用的技术或者难点,比如用java的swing怎么去做一个界面美观的应用程序、java的网络编程技术的原理与应用、以及如何根据J2EE规范去开发一个基于Jsp和Servlet的Web应用等关键技术。
通过设计和开发该系统,使自己所学的理论知识得到实践应用,也对即时通讯软件的通讯原理有了比较深刻的认识,大大的提高了自己的动手能力和解决问题的能力,为今后工作打下坚实的基础。
2相关理论及基础技术与开发平台
2.1即时通讯应用工作原理分析
我们经常听到TCP/IP和UDP(用户数据报协议)这两个术语,它们都是建立在更低层的IP协议上的两种通讯传输协议。
前者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。
而后者是以数据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。
QQ就是使用UDP协议进行发送和接收“消息”的。
当你的机器安装了OICQ以后,实际上,你既是服务端(Server),又是客户端(Client)。
当你登录OICQ时,你的OICQ作为Client连接到腾讯公司的主服务器上,当你“看谁在线”时,你的OICQ又一次作为Client从QQServer上读取在线网友名单。
当你和你的OICQ伙伴进行聊天时,如果你和对方的连接比较稳定,你和他的聊天内容都是以UDP的形式,在计算机之间传送。
如果你和对方的连接不是很稳定,QQ服务器将为你们的聊天内容进行“中转”。
其他的即时通信软件原理与此大同小异。
OICQ的通讯原理:
1.用户首先从QQ服务器上获取好友列表,以建立点对点的联系。
2.用户(Clientl)和好友(Client2)之间采用UDP方式发送信息。
3.如果无法直接点对点联系,则用服务器中转的方式完成。
我们看到两个OICQ用户如果是在两个不同的内网上,它们经过登录后可以不同过服务器来直接通讯。
那这是为什么呢。
其根本原因是OICQ使用了UDP协议,这样用户之间的通讯自己完成就减少了服务器的负担。
那么到底原理是什么样的,为什么TCP应用就不能达到这一要求。
这就涉及到NAT(NetworkAddressTranslator)技术。
NAT技术使得一个私有网络可以通过internet注册IP连接到外部世界,位于inside网络和outside网络中的NAT路由器在发