




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文)说明书题 目: JAVA网络通信系统的研究与开发 毕业设计(论文)中文摘要JAVA网络通信系统的研究与开发 摘 要:网络通信在当今信息社会中起着不可或缺的作用 ,人们可以利用网络通信技术进行即时的信息交流。例如,人们可以通过Internet搜索所要的信息,通过网上通信工具聊天,交流信息,上网购物等等。本课题是应用了计算机网络通信技术和JAVA网络编程的基础知识,以JAVA为平台,利用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发出的基于Socket的网络即时通信系统。系统采用客户机/服务器(C/S)的模式设计,是一个三层C/S结构,数据库服务器、应用程序服务器端、应用程序客户端,按照此设计思想,系统采用C/S结构,可以将任务合理分配到客户机端和服务器端 ,从而降低了系统的通信开销。此系统共分为两个模块:客户端模块和服务器端模块。从操作简便、界面美观、灵活实用的用户要求出发,设计开发的网络通信系统可以实现用户注册,用户登录,消息通信和好友管理等主要功能。本说明书主要介绍了本课题的研究意义以及开发背景、开发过程,和所完成的功能,并着重说明了开发设计的思想、技术难点和解决方案。关键词:网络通信 JAVA平台 C/S Socket毕业设计(论文)外文摘要The Design and Implementation of A Java-Based Internet Communication SystemAbstract: Communication on Internet is very popular and crucial in peoples live. Using the network communication technology, we can chat with our friends at any time. For instance, we can chat or communicate with friends and our company by some chatting tools; we even can buy everything we want on Internet. This system is designed based on computer networking technology and some relative knowledge, using JAVA and SQL SERVER 2,000 database system as tools to develop. This implementation is based on C/S (Client/Server) model. The model can be divided into three levels: Databases level、Server level、Client level. According to this idea, we can distribute the task into two parts: the client and the server. The benefit is that the cost is cut down. From the needs of easy operation, beautiful and vivid interface and practical application, we can design a system which functions is including user registering, user login, adding friend, deleting friend, chatting and so on.This paper introduces the background of the development, the functions demanded and the process of design. Whats more, the paper focuses on the design principles、implementation details、the key techniques and the solutions.Keywords: Web application; Java; C/S model; Socket. 目 录1 引言11.1 课题的研究现状11.2 课题简介以及设计要求21.2.1课题简介21.2.2课题设计要求21.3 课题的调研21.4 可行性分析21.4.1 可行性分析的目的21.4.2 技术可行性分析31.4.3 经济可行性分析31.4.4 操作可行性分析31.4.5 法律可行性分析41.5 论文各章简介42 系统需求分析52.1 业务流分析52.2概念结构设计52.3 数据流分析52.4 数据字典62.4.1数据字典62.4.2处理逻辑说明73 系统总体设计93.1 系统开发的原则93.1.1 面向用户的观点93.1.2 严格按阶段进行93.1.3 采用系统的观点处理93.1.4采用模块化设计方法93.1.5 整个系统的设计主要采用快速原形法93.2系统总体功能结构设计103.2.1 系统代码设计说明103.2.2 系统设计技术说明103.2.3 系统总体功能结构123.3 系统数据库设计133.4开发环境设计与运行环境设计143.4.1 开发环境设计143.4.2 运行环境设计154 服务器模块设计154.1 主服务器类设计154.2 多线程ServerThread类的设计164.3 用户注册模块174.4 登录验证模块设计174.4.1登录线程设计174.4.2 通知好友上线模块184.5 好友管理模块204.5.1 查找好友模块204.5.2 查看好友资料模块204.5.3 直接添加好友模块204.5.4 添加好友模块204.5.5 添加好友应答模块214.5.6 删除好友模块214.6 退出下线模块225 客户端模块设计235.1新用户注册模块235.1.1 注册流程235.1.2 注册事件监听流程235.2 用户登录模块245.2.1 监听登录事件265.2.2 界面设计275.2.3 设计过程中遇到的问题285.3 消息通信模块295.3.1 发送消息305.3.2 监听用户操作消息325.3.3 接收消息355.3.4 发送文件和接收文件模块365.4 好友管理模块375.4.1 查找好友375.4.2 添加好友385.4.3 查看资料395.4.4 删除好友396用户手册406.1 系统的运行环境406.1.1 硬件要求406.1.2 软件环境406.2 系统的功能简介406.3 系统的运行和操作指南407 系统特色与不足427.1 系统特色427.2 系统不足427.3 设计收获和心得42结 论44致 谢45参 考 文 献46毕业设计(论文) 第46页 共46页1 引言1.1 课题的研究现状网络通信在当今信息社会中起着不可或缺的作用 ,人们可以利用网络通信技术进行即时的信息交流。比如说QQ聊天工具,它就是利用网络通信技术开发的一款众所周知的网络聊天工具。目前,信息交流是互联网提供的主要内容,网络通信系统有多种实现方式,类似ICQ属于一种点对点的聊天系统;还有一种是基于Socket的集中式聊天系统,这种聊天系统需要登录统一的聊天服务器。当今主流的聊天工具有QQ,ICQ,MSN Messenger,Yahoo Messenger等,国内最热门的当属QQ,腾讯QQ(OICQ)是由深圳市腾讯计算机系统公司开发的,基于Internet的即时寻呼软件。您可以使用QQ和好友用户进行交流,信息即时发送,即时回复,收发及时、功能全面。此外QQ还具有BP机网上寻呼、聊天室、传输文件、语音邮件、手机短讯服务等功能,QQ不仅仅是虚拟的网络寻呼机,更可与传统的无线寻呼网、GSM移动电话的短消息系统互联,目前QQ和全国多家寻呼台、移动通信公司有业务合作。是国内不可多得的中文网络寻呼机。QQ支持显示朋友在线信息、即时传送信息、即时交谈、即时发送文件和网址。QQ可以在中文Win95/98/NT/2000操作系统下运行,是十分灵活的网络寻呼工具。它会自动检查您是否已联网,如果您的电脑已连入Internet,可以搜索网友、显示在线网友,可以根据QQ号、昵称、姓名、email地址等关键词来查找,找到后可加入到通讯录中。当您的通讯录中的网友在线时,QQ中朋友的头像就会显示在线,根据提示就可以发送信息,如果对方登记了寻呼机或开通了GSM手机短消息,即使离线了,您也可及时将信息传递给您的好友。MSN Messenger 是微软公司推出的即时消息软件,凭借该软件自身的优秀的性能,目前在国内已经拥有了大量的用户群。使用MSN Messenger可以与他人进行文字聊天,语音对话,视频会议等即时交流,还可以通过此软件来查看联系人是否联机。MSN Messenger 界面简洁,易于使用,是与亲人、朋友、工作伙伴保持紧密联系的绝佳选择。使用您已有一个Email地址,即可注册获得免费的MSN Messenger的登录账号。这是当今网络上最好的两款聊天软件。作为国内使用率最高的聊天工具,QQ现在一直走娱乐化的路线,外观越来越绚丽,QQ魔法、QQ秀、QQ皮肤让人眼花缭乱,QQ电台、QQ杂志、QQ新闻的内容也都以娱乐为主。聊天的功能已经渐渐淡化,全方问的休闲娱乐才是真正的主题。日后,聊天软件的发展趋势,不仅仅是以聊天为主要内容了 ,更要集合网络电视电台,邮件的收发,新闻杂志的浏览,个人形象展示,视频传输,音频聊天等等功能。网络通信系统将越来越娱乐化。1.2 课题简介以及设计要求1.2.1课题简介随着人类进入信息社会步伐的加快,计算机网络及其应用得到了飞速的发展,并且成为人们日常生活中的不可或缺的一部分,成为人们有效获取信息和进行娱乐的主要方式之一。例如,人们可以通过Internet搜索所要的信息,通过网上聊天工具聊天,交流心得等等。本课题就是应用了计算机网络通信技术和JAVA网络编程的基础知识,利用Eclipse开发工具开发而成的一个小型的基于JAVA的Web通信系统。1.2.2课题设计要求l 深入了解计算机网络通信基础和网络编程技术。查阅与网络通信设计相关的文献资料,尽可能地搜集与本课题相关、类似的软件系统。l 结合已经有的相关资料,设计出缜密的网络拓扑结构图、总体设计和详细设计。l 选择、运用适当的语言工具及其他工具实现设计方案。l 根据要求撰写设计说明书(论文)。1.3 课题的调研在本系统开发之初,为了做好系统需求分析工作,本人做了充分的调研,从而认识到完成本系统需做到以下几点:l 熟练掌握计算机网络通信的基本原理、网络体系结构、协议。l 熟练掌握JAVA网络编程技术。l 要有正确的设计思想、思维方式以及独立的工作能力,要提高分析问题、综合运用所学理论知识和基本技能解决实际问题的能力。l 通过毕业设计,能够综合运用所学知识调查、分析、解决实际问题;形成能够独立开展研究、独立完成工程总体规划和设计的工作能力。在理论联系实际中,掌握和巩固所学专业知识,为步入社会打好基础。1.4 可行性分析1.4.1 可行性分析的目的可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决,必须记住,可行性研究的目的不是解决问题,而是确定问题是否值得去解。如何达到这样的目的? 当然不能靠主观的猜想,应当进行客观分析。同时必须分析几种主要的可能解法的利弊,从而判断原定的系统目标和规模是否能实现,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究的实质是要进行一次大大压缩简化了的系统分析和设计的过程。首先需要进一步分析和澄清问题定义。在问题定义阶段初步确定设计的规模和目标,如果是正确的就进一步加以肯定,如果有错误就应该及时改正,如果对目标系统有任何约束和限制,也必须把他们清楚的一一列举出来。在澄清了问题定义之后,分析员应该导出系统的逻辑模型。然后从系统逻辑模型出发,探索若干种可供选择的主要方法(即系统实现方案)。对每种解法都应该仔细研究它的可行性,一般说来,至少应该从下述四方面研究每种解法的可行性:(1)技术可行性(2)经济可行性(3) 操作可行性(4) 法律可行性1.4.2 技术可行性分析1) 开发本系统软件环境配置:l Windows 2000/XP 操作系统;l SQL Server 2000数据库系统;l Eclipse开发工具2)开发本系统硬件环境配置:l CPU速度在500MHz以上;l 内存在128MB以上 JAVA技术日趋成熟,JAVA的平台无关性使得用JAVA写的应用程序不用修改就可在不同的软硬件平台上运行,它支持数据分布和操作分布这两种分布性, 对于前者,Java提供了一个叫做URL的对象,利用这个对象,你可以打开并访问具有相同URL地址上的对象,访问方式与访问本地文件系统相同。对于后者,Java 的applet小程序可以从服务器下载到客户端,即部分计算在客户端进行,提高系统执行效率。 Java提供了一整套网络类库,开发人员可以利用类库进行网络程序设计,方便实现JAVA的分布式特性。另外Java还支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。Java提供了一个类Thread,由它负责启动运行,终止线程,并可检查线程状态。Java的线程还包括一组同步原语。这些原语负责对线程实行并发控制。利用Java的多线程编程接口,开发人员可以方便得写出支持多线程的应用程序,提高程序执行效率。 从以上技术要求来看,当今现有的技术绝对能够满足设计这个系统的要求。1.4.3 经济可行性分析开发此网络通信系统所需的硬件(计算机及相关硬件)和软件环境(Eclipse开发工具;数据库SQL Server),在市场上都很容易购买到或从相关网站免费下载,开发系统成本主要集中本系统的开发与维护上,对用户不造成过重的经济负担。而一旦此系统投入使用,可作为公司,企业内部交流工具使用,一方面既充分利用网络资源,又保证内部信息的安全 。所节省的大量人力、财力产生的效益将远远大于本系统的开发成本,所以从经济方面上讲开发此系统是可行的。1.4.4 操作可行性分析此网络通信系统具备友好的用户界面,使用方便、快捷,操作简单且易于维护,易于被用户接受,用户只需熟练操作计算机,和对此系统使用做简单的了解即可方便使用,而且使用此系统可以大大促进人们之间的交流和沟通,从操作方面看,此系统的开发是可行的。1.4.5 法律可行性分析此网络通信系统是由本人开发研制而成,在法律上并未侵害他人权利,无须承担任何法律责任,所以在法律方面开发此系统是完全可行的。通过可行性分析,此系统在无论从技术上还是经济上都是完全可以实现的。我计划用Eclipse开发工具利用TCP/IP协议,UDP协议,Socket,JAVA多线程等主要技术,在两个月内完成系统的基本功能,并在此基础上不断的完善和补充。1.5 论文各章简介第1章引言部分,引言主要叙述关于此课题的国内外的研究状况、问题的定义和内容简介、课题的调研和可行性分析。第2章主要内容是系统需求分析,包括:业务流程分析;数据流分析;数据字典。第3章主要内容是系统总体设计,包括: 系统开发的原则;系统开发设计要点;系统总体功能结构设计;系统数据库设计;开发环境设计与运行环境设计。第4章主要内容是服务器模块设计,包括:主服务器类设计;多线程Server Thread类的设计;登录验证模块设计;新建用户模块;好友管理模块(查找好友模块,读取好友信息模块,添加好友模块,添加好友应答模块,删除好友模块,退出下线模块)。第5章主要内容是客户端模块设计,包括:新用户注册模块;用户登录模块;消息通信模块(发送消息,监听用户操作消息,接收消息,发送文件,接收文件);好友管理模块(查找好友,添加好友,查看资料,更新好友列表,删除好友)。第6章主要内容是用户手册,包括:系统功能简介;系统运行环境和安装环境简介;系统的操作指南说明。第7章主要内容是系统评价,包括:系统的特色和优点简介;系统存在的不足与改进方案说明;毕业设计的收获和心得。 最后还有结论、致谢、参考文献等等内容的介绍。2 系统需求分析2.1 业务流分析在对系统的组织结构和功能进行分析时,需从一个实际业务流程的角度将系统调查中有关该业务流程的资料都串起来作进一步的分析。业务流程分析可以帮助我们了解该业务的具体处理过程,发现和处理系统的调查工作中的错误和疏漏,修改和删除原系统的不合理部分,在新系统基础上优化业务处理流程。本课题设计的网络通信系统业务流程如下:l 系统启动服务器。l 客户端向服务器注册,告知服务器它在监听某主题。l 客户注册之后,向服务器发送有关事件处理消息,如发送消息给好友,接收好友的消息,发送文件,接收文件,删除好友,查看好友资料,添加好友等等。l 服务器再把相应的消息发送给所有监听此主题的客户。2.2概念结构设计概念模型(E-R图):NN注册用户A好友关系注册用户B用户的号码用户的资料用户的E-Mail用户状态用户的性别用户的IP地址用户的籍贯注册用户A用户的昵称用户的密码 2.3 数据流分析数据流程分析主要包括对信息的流动、传递、处理、存储等的分析。数据流程分析的目的就是要发现和解决数据流通中的问题。现有的数据流程分析多是通过分层的数据流程图(data flow diagram,简称DFD)来实现的。其具体的做法是:按照业务流程顺序,将相应调查过程中所掌握的数据处理过程,绘制成一套完整的数据流程图。做出初步的数据流图如下:D2用户好友表用户基本信息表D1登录请求1注册2登录用户 A 3好友管理读取好友信息的请求注册发送信息信息 4消息通信接收消息用户B2.4 数据字典2.4.1数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。数据流条目l 用户基本信息表 编号:D1 来源:客户端写入 去向:数据库 数据流量:每位用户1份 组成:用户的号码+用户的昵称+用户的密码+用户的状态(在线否)+IP地址+用户的资料+用户的头像+用户性别+用户的E-Mail和用户的籍贯l 用户好友表 编号:D2 来源:客户端写入 去向:数据库 数据流量:每位客户1份 组成:用户的号码+好友的号码数据元素条目 以下以用户的号码,用户的昵称,用户的状态,用户的资料四个数据元素条目为例:l 名称:用户号码 编号:F1 别名:用户名 类型及长度:整型,4 相关联数据:用户好友表l 名称:用户昵称 编号:F2 别名:无 类型及长度:字符型,10 l 名称:用户状态(在线否) 编号:F3 别名:无 类型及长度: 布尔型,1 取值范围:“0”,“1”l 名称:用户的资料 编号:F4 别名:无 类型及长度:varchar,50 2.4.2处理逻辑说明l 处理逻辑名: 用户注册 说 明: 新的用户首先要进行注册,生成用户的号码和登录密码之后才能进行服务器登录。 处理逻辑编号:1 输入的数据流:用户名、密码,昵称等信息 处 理 过 程: 用户首先将自己的信息资料输入,包括用户的号码,昵称 ,用户的资料,用户的性别,E-Mail,用户的籍贯等。 输出的数据流:用户信息表 处 理 频 率: 对每个用户基本信息表处理一次l 处理逻辑名: 用户登录说 明: 客户登录,进行网络聊天通信处理逻辑编号: 2输入的数据流: 用户名、密码处 理 过 程: 服务器连接数据库,查询用户信息表,判断登录信息是否正确 输出的数据流: 服务器返回的登录处理数据流处 理 频 率: 对每个用户基本信息表处理一次l 处理逻辑名: 好友管理 说 明: 上线的用户根据自己需要进行查找好友,添加好友,删除好友,查看资料等操作 处理逻辑编号: 3 输入的数据流: 用户的相关操作信息 处 理 过 程: 根据用户提出的操作要求,连接服务器,进行数据库查询,得到符合条件的相关信息,服务器将结果返回给用户。 输 出 的数据流:服务器返回的相应处理结果 处 理 频 率: 依用户要求进行处理l 处理逻辑名: 消息通信 说 明: 两个或多个用户通过连接服务器,进行网络通信 处理逻辑编号: 4 输入的数据流: 用户的发送消息或接收消息流。 处 理 过 程: 用户通过在好友列表中好友的IP地址,利用UDP协议与其他用户进行信息交流。 输出的数据流: 符合条件的发送(接收)消息流 处 理 频 率: 依用户要求进行处理3 系统总体设计3.1 系统开发的原则 3.1.1 面向用户的观点网络即时通信系统是为用户开发研制的,用户是系统的最终使用者和评价者,所以在网络通信系统的开发设计的过程中,我们树立了从用户的寻求出发,面向用户,一切为了用户的观念,在分析与设计系统的前期,为了保证系统的功能的完善多次寻求周围同学和老师的意见,了解他们的要求,依照功能完善,界面美观,操作简单的原则进行设计 。3.1.2 严格按阶段进行系统的开发设计是一项较大的工程,所以应该将整个系统的开发设计过程划分为若干阶段,相应的阶段又要分为若干个不同的步骤,每个阶段和步骤都要有明确的工作任务和目标。这种有序的组织安排,条例清楚、层次分明,便于计划的制定和控制,且为后续工作的进行奠定了坚实的基础,提高了工作效率和质量。 3.1.3 采用系统的观点处理在系统分析阶段,在对原系统进行全面调查和分析的基础上,构造系统的最佳逻辑模型,使用户对将来完整系统的轮廓有个初步的了解和认识,以便及时和用户进行交流和探讨,不断提高系统的完善性。在此基础上进行系统的物理实现和设计,切实完成逻辑模型的具体功能。逻辑设计和物理实现二者是相辅相成、密不可分的,这样使系统的设计更加稳妥合理。 3.1.4采用模块化设计方法系统模块化设计方法是从计算机实现的角度出发对整个系统进行审核和校验,将整个系统划分为不同的功能模块,实现系统的一个特定功能。各个功能模块之间具有相对独立性,便于整个系统的设计、实施、维护和扩充。这种模块化结构设计方法,为整个系统顺利进行奠定了基础。 3.1.5 整个系统的设计主要采用快速原形法 快速原形法是信息系统设计的一个重要方法。它是根据用户提出的需求,由用户和开发者共同确定系统的基本要求和主要功能,并在一个较短的时间内建立一个实验性的、简单的信息系统模型,通过用户不断提出的意见和建议,对模型进行不断的修改和完善,直到用户比较满意为止,以便形成一个相对稳定、较为理想的管理信息系统。该方法的主要优点:l 脉络清楚,所有问题都围绕一个模型展开,使彼此之间联系紧密。l 有助于发现用户需求,通过对原形和用户接触,能够启发开发人员去挖掘问题,从而不断的修正、完善,最终得到一个理想的系统。l 系统开发效率高,此方法的开发周期短、使用灵活、容易修改,这对于管理体制不够稳定的系统更加适合。l 系统的可扩展性好,由于此方法是在原型应用中不断发展完善和修改的,所以有较强的扩展性。3.2系统总体功能结构设计3.2.1 系统代码设计说明在进行代码设计时,遵循了以下原则:l 唯一性 在本系统中,每一个代码都和系统中的每一个对象唯一确定。l 标准性 主要体现在对程序文件名命名和对数据文件命名的标准化上,遵循简单扼要,方便适用的原则。一目了然,无重复现象。为了系统维护人员便于进行系统维护,使用了统一的标准。l 合理性 系统中代码设计与编码对象的分类相适应,以使代码对编码对象的分类据有标志作用。l 简单性 在设计过程中采用Code-Behind代码分离,使数据库操作代码和前端调用代码分离,页面修改容易。l 适应性 在代码设计过程中,代码反映了编码对象的特点,便于识别和记忆,使系统维护人员容易了解和掌握,便于进行维护工作。l 规范性 代码的结构,类型,格式统一,便于记忆和计算机进行处理。l 可扩充性 考虑到今后程序扩充需要,在编制代码时,留有足够的备用代码。3.2.2 系统设计技术说明l TCP/IP协议TCP/IP协议是聊天工具在建立连接时使用的协议,该协议是网络中使用的通信协议,包括传输控制协议和网际协议,TCP/IP协议是网络互连的标准协议,可使不同环境下不同节点之间进行彼此通信,是连入互联网的所有计算机在网络上进行各种信息交换和传输所必须采用的协议。TCP/IP协议实际上是一种层次型协议,是一组协议的总称,它的内部包括很多协议,它们组成了TCP/IP协议组。l UDP协议两个用户之间聊天期间使用的是UDP协议,UDP协议是用来在互联网络环境中提供包交换的计算机通信的协议,此协议默认为网络协议是其下层协议。此协议提供了向另一用户程序发送消息的最简便的协议机制。此协议是面向操作的,未提供提交和复制保护。因为聊天系统对于聊天期间的数据可靠性要求不高,所以使用UDP协议。l 基于套接字(Socket)的编程a) Socket用两种类型:在聊天工具程序中均有用处TCP Socket:由Socket类实现UDP Socket:由Datagram Socket类实现b) 基于连接的流式Socket编程 Socket(套接字)是TCP/IP协议的编程接口,即利用Socket提供的一组API就可以编程实现TCP/IP协议,在Java语言里,这个编程接口就是若干系统预先定义好的类。i. InetAddress类InetAddress类主要用来区分计算机网络中的不同节点,即不同的计算机并对其寻址。每个InetAddress对象包含了IP地址,主机名信息。ii. 流式Socket通信机制流式Socket所完成的通信是一种基于连接的通信,即在通信开始之前先由通信双方确认身份并建立一条专用的虚拟连接通道,然后它们通过这条通道传送数据信息进行通信,当通信结束时再将原先所建立的连接拆除。这个通信过程如图所示:Server 端Client 端关闭Server Socket对象结束监听服务创建Server Socket对象在某端口提供监听服务等待来自Client端的服务请求接收Client端的请求用返回的Socket建立连接通过向Socket中读写数据来与Client端通信关闭Socket,结束与当前Client的通信等待其他请求创建Socket对象向Server的监听端口请求通过向新的Socket中读写数据来与Server通信关闭Socket,结束与Server端的通信建立连接数据通信数据通信 图中Server端首先在某个端口提供一个监听Client请求的监听服务并处于监听状态,当Client端向该Server的这个端口提出服务请求时,Server端和Client端 就建立了一个连接和一条传输数据的通道。当通信结束时,这个连接通道被同时拆除。 基于连接的通信可以保证整个通信过程准确无误,但是连接的建立和拆除增加了程序复杂性,同时在通信过程中始终保持连接也会占用系统的内存等资源,所以只适合于集中的安全性要求高的通信。c) 无连接的数据报UDP数据报是无连接的通信服务,数据以独立的包为单位发送,不保证传送顺序和内容的准确性。数据报Socket又称为UDP套接字,它无须建立,拆除连接,直接将消息打包传给指定的目的地,使用起来比流式数据报要简单一些。Java中用于无连接的数据包通信的类有两个:DatagramPacket类和DatagramSocket类。其中DatagramPacket类 用于读取数据等信息,DatagramSocket类用于实现数据报的发送和接收过程。 数据报的发送过程可简单表述如下:l 创建DatagramPacket对象,使其中包含以下信息:i. 要发送的数据ii. 数据报分组长度iii. 发送目的地的主机IP地址和目的端口号l 在指定的或可用的本级端口创建DatagramSocket对象l 调用该DatagramSocket的send()方法,以DatagramPacket对象为参数发送数据报。 数据报的接收过程描述如下:l 创建一个用于接收数据报的DatagramPacket对象,其中包含空白数据缓冲区和指定数 据报分组长度。l 在指定的或可用的本机端口创建DatagramSocket对象l 调用DatagramSocket对象的receive()方法,以DatagramPacket 对象为参数接收数据报,接收到的信息有:i. 收到的数据报文内容ii. 发送端的主机IP地址iii. 发送端主机发送端口号3.2.3 系统总体功能结构由客户端程序界面可知,本网络通信系统包含以下主要功能:l 用户注册;用户登录;l 上线通知;退出下线通知;l 查找好友;查看好友资料; l 直接添加好友;添加好友;添加好友应答;l 删除好友;更新好友列表;l 发送消息;接收好友消息;发送文件,接收文件,接收陌生人信息;根据系统的要求,出功能模块图如下 网络通信系统 服务器端模块 客户端模块 操作数据库 监听客户 发送文件 用户注册 消息通信 用户登录 好友管理接收文件 接收消息 查找好友 添加好友 查看资料 更新好友列表 删除好友 发送消息 建立连接3.3 系统数据库设计数据库表主要用来存放用户的注册信息和用户的好友资料,可利用两张数据库表来 存放用户信息和用户好友的资料。表1 icq表存放用户信息,包括用户的号码,昵称,密码,在线与否,ip地址,资料,头像号,性别,E-mail和籍贯等信息。其中,用户昵称和密码是必需的字段;在线与否是由系统自动设置的;其余的信息是可选的字段。表1:用户的基本信息表(icq)序号字段名含义数据类型NULL1icqno用户的号码intNO2nickname用户的昵称charNO3password用户的密码charNO4status用户的状态bitNO5ip用户的ip地址charYES6info用户的资料varcharYES7pic用户的头像号intYES8sex用户的性别charYES9email用户的E-mailcharYES10place用户的籍贯charYES注: icqno为自动增加的字段。表2:用户的好友表(表名 friend)序号字段名含义数据类型NULL1icqno用户的号码intNO2friend好友的号码intNO3.4开发环境设计与运行环境设计3.4.1 开发环境设计本课题整体以JAVA为平台,采用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发而成的基于Socket的集中式网络通信系统,系统采用客户机/服务器(C/S)的模式设计,是一个三层C/S结构,数据库服务器、应用程序服务器端 、应用程序客户端。系统采用C/S结构,可以将任务合理分配到客户机端和服务器端 ,从而降低了系统的通信开销。1) . 客户层 (应用表示层) 客户层是应用程序的用户接口部分,它担负着用户与应用间的对话功能,用于检查用户的输入数据,显示应用的输出数据,为了直观的进行操作,客户层需要使用图形用户接口,若聊天用户变更,系统只需改写显示控制和数据检查程序即可,而不会影响其他两层。2) .服务层(功能层)服务层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。在应用设计中,必须避免在表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理达到优化整体设计的目的。3) .数据层数据层是DBMS,本系统使用了Microsoft 公司的SQL Ssever2000数据库服务器来管理数据。SQL Ssever2000能迅速的执行大量数据的更新和检索,因此,从功能层传送到数据层的要求一般都使用SQL语言。其分层结构如图所示:Socket (TCP)Socket (TCP)服务器数据库SQLServer2000JDBC-ODBC3.4.2 运行环境设计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盘目录下。4 服务器模块设计4.1 主服务器类设计1) 在设计服务器时需要考虑如下因素:l 服务器的运行速度l 服务器的响应速度,包括新建连接和发送数据的响应速度l I/O吞吐量l 其他:流量控制,安全性2) 针对TCP/IP协议的数据结构,设计服务器的程序结构需要考虑如下因素:l 多线程l 单线程主服务器类实现了服务器端的多线程,即使用ServerSocket=new ServerSocket(8080)语句在8080端口创建套接口;使用new ServerThread(socket)语句创建新的线程。主服务器类调用ServerThread类,而每个ServerThread实体就是一个单独的线程,即对应于客户端连接请求响应的线程。服务器端有一个进程在指定的端口等待客户的连接信息,一旦连接成功,就可以按设计的数据交换方法和格式进行数据传输。客户端只在需要的时候向服务器发出连接请求。(2)实现代码如下:public class Server /主服务器类Public static void main (String args ) throws IOException ServerSocket s=new ServerSocket(8080); /在8080端口创建套接口System.out.println (Server start.”+s);try while(true)Socket socket=s.accept(); /无限监听客户的请求 System.out.println (Connection accepts: “socket); trynew ServerThread(socket); /创建新线程 catch (IOException e) socket. close () ; finallys.close(); /捕或异常 l 注明:只使用try 和catch关键字会带来一些隐患 ,最可怕的问题是程序的清除,当异常发生时,程序被中断,异常处理程序开始处理响应的情况,我们虽然可以将清除工作放在异常处理模块中,但这绝对不是万无一失的解决方案。像针对连接的操作,一般都要求关闭连接,无论try发生怎样的错误,甚至都没有发生任何错误,都必须清除连接,这种情况下在catch块中清除连接是不合理的,因为程序可能不执行catch块中的代码;在try块中执行清除是不合理的,因为程序可能被提前中断,所以在关闭连接的时候一定要使用finally关键字。Finally关键字所包含的程序段,必须被执行,无论try块中是否有异常发生。4.2 多线程ServerThread类的设计1) ServerThread函数执行过程可描述如下:l 执行ServerThread(Socket s)线程构造函数l 执行socket=s 取得传递函数l 使用BufferedReader(new InputStreamReader(socket.getInputStream())创建数据流l 使用PrintWriter(new BufferedWriter(new OutputStreamWrite(socket.getOutputStream())创建输出流l 使用start()函数启动线程l 最后使用run()线程监听函数。2) 设计说明: run()函数用于监听已经建立连接的线程。具体实现代码如下:class ServerThread extends Thread /继承线程private Socket socket; /定义套接口private BufferedReader in; /定义输入流private PrintWriter out; /定义输出流int no;/定义申请的jicq号码public ServerThread(Socket s) throws IOException /线程构造函数socket=s;/取得传递参数in=new BufferedReader(new InputStreamReader(socket.getInputStream(); /创建输入流out=new PrintWriter (new BufferedWriter (new OutputStreamWriter(socket.getOutputStream (), true); start();/启动线程4.3 用户注册模块1) 新建用户是网络聊天工具的一个基本功能,用户新建过程如下:l 首先在客户端填写用户相关注册信息,点击“注册”按钮l 然后发送“new”新建请求,连接服务器。l 服务器利用run()函数监听到来自客户端的请求,使用Class.forname方法加载数据库驱动类。l 然后使用DriverManager.getConnection 方法连接数据库l 最后服务器接收客户端用户发送的号码,昵称,密码,用户E-Mail。个人资料,籍贯 和性别,头像等信息,执行数据库添加操作完成用户的创建。2) 用户注册流程如下:并返回用户号码,在数据库中注册用户的IP地址等信息客户端服务器结束执行数据库添加得到jicq号码建立连接发送连接请求发送昵称,性别,个人资料等信息SocketServerSocketAcceptin newin information停止接收out jicqnoout newout information发送完毕in jicqno打开主程序窗口创建UDP数据库结束4.4 登录验证模块设计4.4.1登录线程设计1) 用户登录流程表述如下:l 客户端在登录窗口输入登录号码和登录密码,点击“登录”按钮。l 客户端发送“login”请求,表示需要登录,连接服务器。l 服务器run()函数监听到该信息后,连接数据库,准备从数据库中选择昵称和密码。l 服务器接收到客户端发送过来的号码和密码信息后,设定数据库查寻条件,并执行数据库查寻,比较输入的用户名和密码和数据库中信息是否相符,如果相符则表示登录成功,并弹出登录后的主窗口。否则,则出现信息出错提示框。提示框如图所示:2) 用户登录流程如图所示:服务器客户端信息匹配查询数据库比较数据库表数据与用户输入信息是否相符建立连接发送登录请求发送icqno和密码信息SocketServerSocketAcceptin login并连接数据库in informationout false或者登录成功信息结束out loginout information读取服务器信息打开主程序窗口创建UDP数据库4.4.2 通知好友上线模块l 服务器首先连接数据库,再根据“我的号码”从好友列表中得到我的好友列表,然后利用广播通知他们我已经上线了。l 通知好友上线模块流程如图所示:上线的用户run( )函数线程监听判断输入流是否等于getwhoaddme连接数据库,读入 myicqno,查询好友表利用循环语句得到每一个好友的ip地址,并返回众好友的ip地址利用循环语句判断是哪一个好友上线,更新好友列表头像否是判断输入流等于监听函数的哪一个字符串,并执行响应的操作连接服务器out getwhoaddme,myicqno客户端接收众好友ip,根据好友ip发送online数据报结束要通知的好友Online按钮事件响应4.5 好友管理模块4.5.1 查找好友模块当客户端向服务器发送查找好友的请求后,服务器立即响应并调用Class.forname 方法加载数据库驱动类sun.jdbc.odbc.JdbcOdbcDriver , 然后调DriverManager.getConnection完成数据库的连接,得到好友查询的结果。查询结果包括:好友的昵称,头像信息,性别,籍贯,E-Mail,个人资料等。客户端接收到查询结果后,利用响应的函数将其显示出来。4.5.2 查看好友资料模块用户在得到好友列表后,可根据需要读取好友的详细资料。查看好友资料功能是在查找好友功能的基础是建立的。当客户点击“查看资料”菜单子项时,客户主程序监听到用户的操作要求,同时调用void lookinfo_mousePressed(MouseEvent e)事件处理程序,把已经用Vector矢量保存好的好友号码,昵称,性别, IP地址,状态,头像和个人资料信息返回给客户。4.5.3 直接添加好友模块客户端发送“addnewfriend”请求,连接服务器,服务器根据客户端发来的用户号码和用户想要添加的好友的号码进行数据库操作,直接将该号码添加到用户的好友表中,而不需要经过被添加的用户的同意。4.5.4 添加好友模块1) 添加好友的步骤如下:l 客户端用户点击“加为好友”按钮,向服务器端发送“addfriend”请求。l 服务器响应客户端用户的请求后,首先连接数据库,并根据接收的用户号码在fiend表中查询用户所有的好友号码,如果接收的用户想要添加的好友号码已经是好友的列表,则向客户端发送“same”应答,在客户端将弹出“该用户已经是你的好友的提示框 ”l 如果该用户想要添加的好友未在用户好友表中,则根据接收的用户号码和好友号码向好友表添加记录,服务器使用r6保存查询结果,若r6为1,则表明添加成功,服务器将向客户端发出“ok addfriend”消息,否则,添加好友失败,服务器将给客户端发出“false addfriend”的消息。2) 添加好友流程如下:添加好友的用户run( )函数线程监听连接数据库,读入 myicqno,查询好友表判断输入流等于监听函数的哪一个字符串,并执行响应的操作连接服务器Out addfriend,myicqno, jicq.get(dd)被添加的好友“加为好友”按钮事件响应 判断好友是否在好友列表中?向客户端发送“add”输出流向客户端发送“same”输出流客户端接收服务器端信息判断接受到的信息是否是“same”?发送数据报给对方,内容为“oneaddyou”弹出“该用户已经是你的好友”的对话框”判断输入流是否等于oneaddyou弹出Oneaddyou 对话框否是 连接服务器添加好友关闭对话框判断是否 同意加他?结束否是否是是否 4.5.5 添加好友应答模块l 如果用户A将用户B加为好友,则弹出提示框“用户A已经把你加为好友”。用户B可以选择添加A为好友,也可以选择不加。l 如果用户B选择添加A为自己的好友,则向服务器发送“addnewfriend”请求l 服务器收到请求后,连接数据库,根据接收的用户号码以及好友号码向好友表添加记录。若添加成功,则服务器利用r5保存处理结果,比如昵称,号码,性别等信息,并向客户端输出结果。4.5.6 删除好友模块l 首先,点击“删除好友”按钮,响应函数将首先向数据库发送“delfriend”请求,同时发送用户的号码(myjicq)和想要删除的好友号码(friendjicq),其中用户的号码是在登录时创建主窗口时获得的,要删除的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中级微观经济学知到课后答案智慧树章节测试答案2025年春浙江大学
- 2025年天一大联考海南省高三2月英语试题模拟试题含解析
- 宁夏警官职业学院《外国民族音乐概论》2023-2024学年第一学期期末试卷
- 焦作大学《泰语口语》2023-2024学年第二学期期末试卷
- 江西理工大学《过程装备集成科学与技术》2023-2024学年第二学期期末试卷
- 广东海洋大学《纺织绿色制造》2023-2024学年第二学期期末试卷
- 四川省绵阳市游仙区2025年数学五下期末检测模拟试题含答案
- 上海市格致初级中学2025年高考模拟(4月)英语试题含解析
- 工伤认定风险点和防范措施
- 2025年五氧化二磷行业政策分析:五氧化二磷行业标准规范行业发展
- 高等教育数字化转型心得体会
- 2025年安徽财贸职业学院单招职业技能测试题库及答案1套
- 2025年安徽职业技术学院单招职业技能测试题库及答案1套
- 日式保洁培训课件大全
- 2025年广东省深圳市高考语文一模试卷
- 2025年陕西工商职业学院单招职业技能测试题库学生专用
- 2025年福建省高职单招职业适应性测试题库及答案解析
- 自媒体运营实战教程(抖音版) 课件 第7章 短视频运营-自媒体中级
- 2025时事政治必考题库含参考答案
- 保洁管理安全培训课件
- 小学生药品安全课件视频
评论
0/150
提交评论