摘要:网络通信在当今信息社会中起着不可或缺的作用 ,人们可以利用网络通信技术进行即时的信息交流。例如,人们可以通过Internet搜索所要的信息,通过网上通信工具聊天,交流信息,上网购物等等。
本课题是应用了计算机网络通信技术和JAVA网络编程的基础知识,以JAVA为平台,利用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发出的基于Socket的网络即时通信系统。系统采用客户机/服务器(C/S)的模式设计,是一个三层C/S结构,数据库服务器、应用程序服务器端、应用程序客户端,按照此设计思想,系统采用C/S结构,可以将任务合理分配到客户机端和服务器端 ,从而降低了系统的通信开销。此系统共分为两个模块:客户端模块和服务器端模块。从操作简便、界面美观、灵活实用的用户要求出发,设计开发的网络通信系统可以实现用户注册,用户登录,消息通信和好友管理等主要功能。本说明书主要介绍了本课题的研究意义以及开发背景、开发过程,和所完成的功能,并着重说明了开发设计的思想、技术难点和解决方案。
目录:
在对系统的组织结构和功能进行分析时,需从一个实际业务流程的角度将系统调查中有关该业务流程的资料都串起来作进一步的分析。业务流程分析可以帮助我们了解该业务的具体处理过程,发现和处理系统的调查工作中的错误和疏漏,修改和删除原系统的不合理部分,在新系统基础上优化业务处理流程。l 客户端向服务器注册,告知服务器它在监听某主题。l 客户注册之后,向服务器发送有关事件处理消息,如发送消息给好友,接收好友的消息,发送文件,接收文件,删除好友,查看好友资料,添加好友等等。l 服务器再把相应的消息发送给所有监听此主题的客户。
数据流程分析主要包括对信息的流动、传递、处理、存储等的分析。数据流程分析的目的就是要发现和解决数据流通中的问题。现有的数据流程分析多是通过分层的数据流程图(data flow diagram,简称DFD)来实现的。其具体的做法是:按照业务流程顺序,将相应调查过程中所掌握的数据处理过程,绘制成一套完整的数据流程图。
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。 组成:{用户的号码+用户的昵称+用户的密码+用户的状态(在线否)+IP地址+用户的资料+用户的头像+用户性别+用户的E-Mail和用户的籍贯} 以下以用户的号码,用户的昵称,用户的状态,用户的资料四个数据元素条目为例: 说 明: 新的用户首先要进行注册,生成用户的号码和登录密码之后才能进行服务器登录。 处 理 过 程: 用户首先将自己的信息资料输入,包括用户的号码,昵称 ,用户的资料,用户的性别,E-Mail,用户的籍贯等。处 理 过 程: 服务器连接数据库,查询用户信息表,判断登录信息是否正确 说 明: 上线的用户根据自己需要进行查找好友,添加好友,删除好友,查看资料等操作 处 理 过 程: 根据用户提出的操作要求,连接服务器,进行数据库查询,得到符合条件的相关信息,服务器将结果返回给用户。 说 明: 两个或多个用户通过连接服务器,进行网络通信 处 理 过 程: 用户通过在好友列表中好友的IP地址,利用UDP协议与其他用户进行信息交流。网络即时通信系统是为用户开发研制的,用户是系统的最终使用者和评价者,所以在网络通信系统的开发设计的过程中,我们树立了从用户的寻求出发,面向用户,一切为了用户的观念,在分析与设计系统的前期,为了保证系统的功能的完善多次寻求周围同学和老师的意见,了解他们的要求,依照功能完善,界面美观,操作简单的原则进行设计 。系统的开发设计是一项较大的工程,所以应该将整个系统的开发设计过程划分为若干阶段,相应的阶段又要分为若干个不同的步骤,每个阶段和步骤都要有明确的工作任务和目标。这种有序的组织安排,条例清楚、层次分明,便于计划的制定和控制,且为后续工作的进行奠定了坚实的基础,提高了工作效率和质量。在系统分析阶段,在对原系统进行全面调查和分析的基础上,构造系统的最佳逻辑模型,使用户对将来完整系统的轮廓有个初步的了解和认识,以便及时和用户进行交流和探讨,不断提高系统的完善性。在此基础上进行系统的物理实现和设计,切实完成逻辑模型的具体功能。逻辑设计和物理实现二者是相辅相成、密不可分的,这样使系统的设计更加稳妥合理。系统模块化设计方法是从计算机实现的角度出发对整个系统进行审核和校验,将整个系统划分为不同的功能模块,实现系统的一个特定功能。各个功能模块之间具有相对独立性,便于整个系统的设计、实施、维护和扩充。这种模块化结构设计方法,为整个系统顺利进行奠定了基础。快速原形法是信息系统设计的一个重要方法。它是根据用户提出的需求,由用户和开发者共同确定系统的基本要求和主要功能,并在一个较短的时间内建立一个实验性的、简单的信息系统模型,通过用户不断提出的意见和建议,对模型进行不断的修改和完善,直到用户比较满意为止,以便形成一个相对稳定、较为理想的管理信息系统。该方法的主要优点:l 脉络清楚,所有问题都围绕一个模型展开,使彼此之间联系紧密。l 有助于发现用户需求,通过对原形和用户接触,能够启发开发人员去挖掘问题,从而不断的修正、完善,最终得到一个理想的系统。l 系统开发效率高,此方法的开发周期短、使用灵活、容易修改,这对于管理体制不够稳定的系统更加适合。l 系统的可扩展性好,由于此方法是在原型应用中不断发展完善和修改的,所以有较强的扩展性。l 唯一性 在本系统中,每一个代码都和系统中的每一个对象唯一确定。l 标准性 主要体现在对程序文件名命名和对数据文件命名的标准化上,遵循简单扼要,方便适用的原则。一目了然,无重复现象。为了系统维护人员便于进行系统维护,使用了统一的标准。l 合理性 系统中代码设计与编码对象的分类相适应,以使代码对编码对象的分类据有标志作用。l 简单性 在设计过程中采用Code-Behind代码分离,使数据库操作代码和前端调用代码分离,页面修改容易。l 适应性 在代码设计过程中,代码反映了编码对象的特点,便于识别和记忆,使系统维护人员容易了解和掌握,便于进行维护工作。l 规范性 代码的结构,类型,格式统一,便于记忆和计算机进行处理。l 可扩充性 考虑到今后程序扩充需要,在编制代码时,留有足够的备用代码。TCP/IP协议是聊天工具在建立连接时使用的协议,该协议是网络中使用的通信协议,包括传输控制协议和网际协议,TCP/IP协议是网络互连的标准协议,可使不同环境下不同节点之间进行彼此通信,是连入互联网的所有计算机在网络上进行各种信息交换和传输所必须采用的协议。TCP/IP协议实际上是一种层次型协议,是一组协议的总称,它的内部包括很多协议,它们组成了TCP/IP协议组。两个用户之间聊天期间使用的是UDP协议,UDP协议是用来在互联网络环境中提供包交换的计算机通信的协议,此协议默认为网络协议是其下层协议。此协议提供了向另一用户程序发送消息的最简便的协议机制。此协议是面向操作的,未提供提交和复制保护。因为聊天系统对于聊天期间的数据可靠性要求不高,所以使用UDP协议。a) Socket用两种类型:在聊天工具程序中均有用处UDP Socket:由Datagram Socket类实现 Socket(套接字)是TCP/IP协议的编程接口,即利用Socket提供的一组API就可以编程实现TCP/IP协议,在Java语言里,这个编程接口就是若干系统预先定义好的类。InetAddress类主要用来区分计算机网络中的不同节点,即不同的计算机并对其寻址。每个InetAddress对象包含了IP地址,主机名信息。流式Socket所完成的通信是一种基于连接的通信,即在通信开始之前先由通信双方确认身份并建立一条专用的虚拟连接通道,然后它们通过这条通道传送数据信息进行通信,当通信结束时再将原先所建立的连接拆除。这个通信过程如图所示:
图中Server端首先在某个端口提供一个监听Client请求的监听服务并处于监听状态,当Client端向该Server的这个端口提出服务请求时,Server端和Client端 就建立了一个连接和一条传输数据的通道。当通信结束时,这个连接通道被同时拆除。 基于连接的通信可以保证整个通信过程准确无误,但是连接的建立和拆除增加了程序复杂性,同时在通信过程中始终保持连接也会占用系统的内存等资源,所以只适合于集中的安全性要求高的通信。数据报是无连接的通信服务,数据以独立的包为单位发送,不保证传送顺序和内容的准确性。数据报Socket又称为UDP套接字,它无须建立,拆除连接,直接将消息打包传给指定的目的地,使用起来比流式数据报要简单一些。Java中用于无连接的数据包通信的类有两个:DatagramPacket类和DatagramSocket类。其中DatagramPacket类 用于读取数据等信息,DatagramSocket类用于实现数据报的发送和接收过程。l 创建DatagramPacket对象,使其中包含以下信息:l 在指定的或可用的本级端口创建DatagramSocket对象l 调用该DatagramSocket的send()方法,以DatagramPacket对象为参数发送数据报。l 创建一个用于接收数据报的DatagramPacket对象,其中包含空白数据缓冲区和指定数 据报分组长度。l 在指定的或可用的本机端口创建DatagramSocket对象l 调用DatagramSocket对象的receive()方法,以DatagramPacket 对象为参数接收数据报,接收到的信息有:由客户端程序界面可知,本网络通信系统包含以下主要功能:l 发送消息;接收好友消息;发送文件,接收文件,接收陌生人信息;
数据库表主要用来存放用户的注册信息和用户的好友资料,可利用两张数据库表来 存放用户信息和用户好友的资料。表1 icq表存放用户信息,包括用户的号码,昵称,密码,在线与否,ip地址,资料,头像号,性别,E-mail和籍贯等信息。其中,用户昵称和密码是必需的字段;在线与否是由系统自动设置的;其余的信息是可选的字段。
本课题整体以JAVA为平台,采用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发而成的基于Socket的集中式网络通信系统,系统采用客户机/服务器(C/S)的模式设计,是一个三层C/S结构,数据库服务器、应用程序服务器端 、应用程序客户端。系统采用C/S结构,可以将任务合理分配到客户机端和服务器端 ,从而降低了系统的通信开销。 客户层是应用程序的用户接口部分,它担负着用户与应用间的对话功能,用于检查用户的输入数据,显示应用的输出数据,为了直观的进行操作,客户层需要使用图形用户接口,若聊天用户变更,系统只需改写显示控制和数据检查程序即可,而不会影响其他两层。服务层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。在应用设计中,必须避免在表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理达到优化整体设计的目的。数据层是DBMS,本系统使用了Microsoft 公司的SQL Ssever2000数据库服务器来管理数据。SQL Ssever2000能迅速的执行大量数据的更新和检索,因此,从功能层传送到数据层的要求一般都使用SQL语言。其分层结构如图所示:
l 因为本系统是用Eclipse工具来开发的,所以首先要安装Eclipse开发工具。Eclipse开发工具可以安装在任何操作系统上,本课题是在Windows 系统下安装的Eclipse,在安装之前,要先安装Java的JDK(或运行环境JRE)来支持Eclipse的运行。本系统的安装环境为:Windows XP中文版+JDK1.4.2_06+Eclipse3.1.1。l 说明:在Windows系统下安装Eclipse不需要设置JDK环境变量。为了使用方便 ,把JDK和Eclipse都安装在C盘目录下。