vlambda博客
学习文章列表

【论文参考】基于java一个简单的即时通讯工具的设计与开发(源代码+论文)免费下载

  点击蓝字关注我哦    



摘要:

即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。Java是当前比较流行的开发语言之一,它有着自己的易用特点与性能优势,比如跨平台、安全性、多线程、网络Socket编程、数据流概念等方面,因此通过对开源即时通讯LinuxQQ的研究和分析,基于Java语言和J2EE规范设计了一个即时通讯工具JICQ (Java for I seek you),并对其体系结构、构成模块及系统关键技术进行了分析与设计。在系统设计与建模过程中,使用了UML和面向对象的分析、设计方法,并使用Rose作为建模工具;本系统基于j2se1.5,j2ee1.4,使用Eclipse等作为开发工具,在开发过程中用到了时下流行的重构开发方法,优化了系统的设计。力图使系统具有安全、高效、实用、支持在不同系统平台运行等特点。

关键字:    

    即时通讯;多线程;SOCKET编程;JSP

 

 

目录:

【论文参考】基于java一个简单的即时通讯工具的设计与开发(源代码+论文)免费下载




相关理论及基础技术与开发平台:  

2.1 即时通讯应用工作原理分析

我们经常听到TCP/IPUDP(用户数据报协议)这两个术语,它们都是建立在更低层的IP协议上的两种通讯传输协议。前者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。而后者是以数据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。
QQ就是使用UDP协议进行发送和接收消息的。当你的机器安装了OICQ以后,实际上,你既是服务端(Server),又是客户端(Client)。当你登录OICQ时,你的OICQ作为Client连接到腾讯公司的主服务器上,当你看谁在线时,你的OICQ又一次作为ClientQQ Server上读取在线网友名单。当你和你的OICQ伙伴进行聊天时,如果你和对方的连接比较稳定,你和他的聊天内容都是以UDP的形式,在计算机之间传送。如果你和对方的连接不是很稳定QQ服务器将为你们的聊天内容进行中转。其他的即时通信软件原理与此大同小异。
   OICQ的通讯原理:
   1.用户首先从QQ服务器上获取好友列表,以建立点对点的联系。
2.用户( Clientl)和好友(Client2)之间采用UDP方式发送信息。
   3.如果无法直接点对点联系,则用服务器中转的方式完成。我们看到两个OICQ用户如果是在两个不同的内网上,它们经过登录后可以不同过服务器来直接通讯。那这是为什么呢。其根本原因是OICQ使用了UDP协议,这样用户之间的通讯自己完成就减少了服务器的负担。那么到底原理是什么样的,为什么TCP应用就不能达到这一要求。这就涉及到NAT ( Network AddressTranslator)技术。NAT技术使得一个私有网络可以通过internet注册IP连接到外部世界,位于inside网络和outside网络中的NAT路由器在发送数据包之前,负责把内部IP翻译成外部合法地址。内部网络的主机不可能同时与外部网络通信,所以只有一部分内部地址需要翻译。"NAT"的翻译可以采取静态翻译和动态翻译两种。静态翻译将内部地址和外部地址一对一对应。当使用了动态翻译时就采用port multiplexing技术,通过改变外出数据的源port技术可以将多个内部IP地址影射到同一个外部地址,这就是PAT (port address translator)。在这种情况下,一个TCP连接只能和固定的连接方通讯,而UDP应用本身就可以接受不同数据来源的数据包,所以在NAT转换的时候能够完成两个客户端之间的通讯,从而达到了客户端直接通讯的目的。
总的来说,OICQ的应用在客户端方面符合即时通讯系统的模型。客户端之间的通讯中,采用了UDP的通讯方式,当客户端之间无法直接通讯时,采用通过服务器转发的方式来实现即时信息的传送。

2.2所用技术

JAVA多线程技术:多线程的各个线程看上去像是并行地独自完成各自的工作,就像一台一台计算机上运行着多个处理机一样。在多处理机计算机上实现多线程时,它们确实可以并行工作,而且采用适当的分时策略可以大大提高程序运行的效率。而作为接受客户端请求的服务器来说,必须使用多线程技术来接受不同时刻的请求,接收一个处理一个,将其放入线程队列,然后继续监听其他的请求。
网络通讯与Socket编程:java网络编程中有两种不同的通讯协议,分别是TCP(面向连接)与UDP(面向无连接),两种协议各有优缺点。
TCP:是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。    UDP:是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
JDBC数据库技术:JDBC, 全称为Java DataBase Connectivity standard, 它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。JDBC也是java核心类库的一部分。JDBC的最大特点是它独立于具体的关系数据库。与ODBC (Open Database Connectivity)类似, JDBC API 中定义了一些Java类分别用来表示与数据库的连接(connections), SQL语句(SQL statements), 结果集(result sets)以及其它的数据库对象, 使得Java程序能方便地与数据库交互并处理所得的结果。使用JDBC, 所有Java程序(包括Java applications , applets和servlet)都能通过SQL语句或存储在数据库中的过程(stored procedures)来存取数据库。
SWING界面设计:java的扩展包,其中包括众多的控件以及丰富的控件操作功能,使用户可以简单的利用它画出应用程序的界面,结合JBuilder9.0带的绝对定位类包,可以设计出非常好看的用户界面。
JSP与SERVLET技术:JSP和SERVLET是在j2ee平台下开发WEB应用的基础, JSP是由SUN公司倡导 众多公司参与一起建立的一个动态网页标准技术,JSP技术为建立具有动态生成内容的WEB应用提供了一种简便而且功能强大的途径,它可以快速开发出与平台无关的基于WEB的应用,JSP是更高级的SERVLET,在运行的时候JSP先被转化为SERVLET。
UML:UML是一个统一建模语言, 是当今世界上面向对象系统开发领域中的工具之一,它是一种可视化的建模语言,能够让系统构造者用标准的、易于理解的方式建立起能够表达出他们想像力的系统蓝图,并且提供了便于不同的人之间有效地共享和交流设计结果的机制。它包含了9种图形还有其他一些特征,很方便用户进行建模。

2.3工具及开发平台

Borland JBuilder是全球第一的跨平台Java开发环境,可以用于构建符合工业标准的Java应用系统,不仅可以开发桌面级程序,并且可以开发EJB、Web、XML以及数据库等各类应用程序。双向、可视化设计工具使得我们可以快速的构建各种应用程序,并部署至多种应用程序服务器,利用JBuilder,我们可以快速、方便的构建出Java应用程序,并且其中提供了一个类似于VS.NET中的界面编辑器功能,它具有绝对的定位功能,我们不用再手工粗糙的排列JAVA的LayoutManager,这一切完全可以用JBuilder开快速完成。
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。更舒服的是,利用Eclipse中的MyEclipse插件来搭建一个动态JSP程序,快速,简单、方便。
Rose一套非常有使用价值的系统建模工具,其中提供了非常方便的系统建模功能,比如用例图、行为图、活动图、时序图等。利用它可以加快系统设计开发效率,同时可以给用户和开发者提供清晰的图,使他们之间的交流变得更加的方便有效。
SQL SERVER2000数据库是微软的功能强大的数据库管理系统,具备很多数据库管理常用的功能,例如存储过程、数据查询与更新等,是一个非常理想的后台数据库系统。
Tomcat是Sun的JSWDK(JavaServer Web Development Kit)中Servlet的运行环境(servlet容器), 是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。

2.4 系统配置要求

 推荐配置如下:CPU2G以上, 内存512以上,运行平台基于Windows平台。 客户端需要安装java虚拟机,同时还要有JICQ的客户端程序。服务器端需要安装Sql server2000数据库, 服务器端如果是windowsXP系统要打上Sql server 2000的SP3或者SP4补丁包,同时服务器端需要安装Web服务器TOMCAT,还有JICQ的服务器端程序。
 

系统体系结构的设计:

3.1 需求描述

伴随着当今互联网的迅速发展,人们之间的信息交互的实时性能变得越来越重要,传统的电子邮件交互已经不能够满足人们的即时通讯要求,鉴于此种情况打算开发出一款类似于腾讯QQ的即时通讯软件,只要经过注册你便可以获取一个帐号,通过该帐号你可以在客户端登陆,成功登录后便可以在互联网上与你的亲朋好友进行畅谈,由于技术和时间问题,该软件主要提供私聊、群聊、好友管理、群管理等常用功能,其它一些功能比如文件传输、语音聊天和视频聊天等功能,由于技术问题暂时没有实现,可以在该系统的基础上实现这些功能,也可以在此基础上进行更多功能的扩展。

3.2系统架构设计

该系统主要包括三层,客户端,服务器端,以及数据库服务器,客户端用来提供用户的登录,服务器端用来对登录的用户进行管理以及用来处理信息之间的转发,数据库服务器主要存放一些重要的信息。它们之间的关系如下图所示:

【论文参考】基于java一个简单的即时通讯工具的设计与开发(源代码+论文)免费下载1 三层模型

中间层又分成四个部分:
 

【论文参考】基于java一个简单的即时通讯工具的设计与开发(源代码+论文)免费下载

图2 中间层的构成
本系统采用的设计模型为平时所说的C/S架构,Client/Server,系统总体模型图如下:

【论文参考】基于java一个简单的即时通讯工具的设计与开发(源代码+论文)免费下载

图3 客户端/服务器端模型图






扫一扫下方二维码联系客服获取相关资料。













END






联系我

获取更多资源

学习更上一层楼