版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录摘要11 局域网聊天工具概述1 开发目标和意义11.2 WINDOWS SOCKETS编程12 系统分析22.1 需求分析22.2 性能要求与可行性分析33 系统设计33.1 系统功能结构33.2 系统业务流程分析43.3 数据库设计54 系统模块详细设计64.1 文本聊天模块实现64.2 文件传输模块实现75 系统测试86 总结10参考文献11致 谢12局域网聊天工具的设计与实现摘要:本文提出并设计了一个局域网聊天工具,并在WINDOWS平台上利用Visual Studio2010加以实现。本设计将文本聊天和文件传输等功能综合在一个客户端程序之内,使用C#语言进行网络编程,并进行了人性
2、化的界面设计,使用起来简单方便,并且功能十分合理,又易于扩展以及个性化定制。关键词:局域网;C/S体系结构;文本聊天;文件传输The Design And Implementation of The LAN Chat ToolAbstract: This paper put forward and design a LAN chatting tools, and in the W-indows platform by using Visual Studio 2010 realization. This design will text chat a- nd file transfer are
3、integrate in a client program, using C# language for network prog- ramming, and the human interface design, easy to use, and the function is quite reaso- nable, and easy expansion and customization.Key words: LAN; C/S Architecture ;Text-Chat; File-Ttransfer 1 局域网聊天工具概述 开发目标和意义本设计的主要工作是设计一个基于WINDOWS平
4、台的局域网即时聊天工具,具体是采用C/S模式实现用户之间的通信,然后阐述本软件的功能、特点及使用方法,并详细阐述开发本软件所用的相关技术,具体分析本软件的各个模块的功能及实现方法,说明本软件的设计思想及方法。局域网聊天工具,是在局域网内部使用的,用户之间用来交流的一个工具,一般都具有文本聊天和文件传输功能。局域网聊天软件因其使用简单,系统资源消耗少等优点,成为各企事业单位等的局域网内广泛应用的软件之一。 WINDOWS SOCKETS编程通常的通信工具,都采用客户机/服务器(C/S)体系结构,C/S结构是这样的一种结构:它包括客户机和服务器。客户机的作用是访问和处理远程服务器上的数据,服务器的
5、作用是接收和处理客户机的数据请求。Client/Server结构是当前数据库应用程序中极为流行的一种方式。尤其是网络技术的发展,使得当前很多系统都采用这种方式进行构造,其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。Client/Server模型最终可归结为一种“请求/应答”关系。一个请求总是首先被客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。在客户发出一个请求之前,服务进程一直处于休眠状态。一个客户提出请求后,服务进程被“唤醒”并且为客户提供服
6、务,对客户的请求做出所需要的应答。2 系统分析2.1 需求分析随着中小型企事业的不断发展,在企业内部实现局域网通信是必不可少的。局域聊工具就是一个非常好的局域网通信软件,它可以在职工不移动位置的情况下进行在线聊天、文件传递。这样,可以大大提高企业的工作效率,便于企业内部职员的交流。根据用户对聊天工具的要求,可分为以下几点:(1) 操作简单方便、界面简洁美观;(2) 可以在局域网实现文字和文件的传输;(3) 可以实现用户的注册、登录和注销;(4) 程序启动之后就能看到当前哪些机器在线,哪些可以与之进行对等通信。可以实现局域网聊天;(5) 一旦有某个网内的机器上线了,要有即时通知,并能及时更新用户
7、界面中的用户列表;(6) 当单击用户列表项的时候,直接在聊天对话框聊天,发送聊天信息;(7) 当有远程用户向本机发送文件的时候,弹出一个消息提示,用户可选择接收或者拒绝;(8) 文件传输过程中,应该有当前传输状态提示,并作为当前网络状态的一种反馈;(9) 为用户提供一个简单的聊天记录保存功能。2.2 性能要求与可行性分析在性能上,首先要求程序要完全可靠,可以应付各种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能
8、以最好的方式退出程序,避免发生程序假死现象。要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的耦合,以免维护困难。在成本可行性上,本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。在技术可行性上,开发所需要的软硬件平台已经搭建好,并进行了合理而完善的需求分析,做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与C#开发环境的严密契合能力,与更大规
9、模的INTERNET通信工具产品也已有例在先,所以这个程序的开发在技术上是完全可行的。3 系统设计 系统功能结构本系统中主要包括两个部分:服务器端和客户端。(1) 服务器端的功能包括: 验证登录:检查登陆信息是否正确,并向客户端返回登陆信息,如信息正确。就将在线用户发给该用户,并将该用户的状态发给各在线用户。同时在服务器端显示出来。 处理注册信息:用户提交注册信息后,自动验证是否重名,如果重名则返回提示,如果不重名则将信息加入数据库。 发布系统消息:将此用户上线、下线消息发给各客户端,并在服务器端显示在线用户信息。 保存聊天记录:在接收到用户保存聊天记录申请的同时自动保存聊天记录为文本文件。服
10、务器功能结构如下图1所示:图1 服务器端功能结构图(2) 客户端的功能包括: 用户登录:建立与服务器的连接并登陆,能显示登陆错误信息。 用户注册:建立与服务器连接并提交注册信息,注册成功后自动登录。 界面显示:登录成功后,自动显示在线用户列表。 发送消息:选择要发送对象后,可以发送文本消息或者文件。 接收消息:收到其他用户消息后,提醒并显示。接收文件时可以选择接收或拒绝。 聊天记录的保存:用户下线前自动向服务器发送申请保存聊天记录。客户端功能结构如下图2所示。图2 客户端功能结构图 系统业务流程分析首先又服务器开启服务,监听局域网中客户端的连接请求,客户端连接后,登陆或者处理注册信息,并返回操
11、作结果,客户端注册或者登陆成功后,显示聊天窗体,此时各客户端将自主的监听局域网中的用户,实时更新自己的用户列表并显示,各个客户端之间的信息交流不再通过服务器转发,而是自主通信。局域网聊天系统的业务流程图如图3所示。图3 系统业务流程图 数据库设计(1) 数据库表的设计系统需求主要体现在用户的注册、登录、发送消息、接收消息、聊天记录的保存等方面,而本系统发送消息,接收消息,聊天记录保存均有客户端自主完成,因此不需要体现在数据库中,这样数据库只需储存用户的信息即可。所以只需要建立1个表:用户表。用户表结构如表1所示。表1 用户表(Users)列名数据类型允许空userIDInt主键userName
12、Nchar(10)不能为空passWordNchar(10)不能为空(2) 存储过程和触发器的设计存储过程是指将常用的或复杂的数据库操作,预先用sql语句写好并用一个指定的名称存储在数据库中,以后在调用存储过程时,只需要指定存储过程的名称和参数即可。本系统主要有登录验证、用户注册两个存储过程。登录验证(loginProcedure):在用户登录时,由服务器调用,验证用户的用户名和密码是否正确。用户注册(regProcedure):用户注册时,由服务器调用添加新用户。4 系统模块详细设计4.1 文本聊天模块实现凡是聊天工具,都少不了文本聊天功能,这是个基础功能。通过文本聊天,局域网内用户能够发送
13、和接收文字信息,并在程序窗体上显示出来,相互之间进行在线交流,并能根据用户需要,对聊天记录进行简单的保存。文本聊天的信息传输协议主要有面向连接的TCP和无连接的UDP。TCP协议是互联网中最重的协议之一,主要特点是:保证数据包的准确到达;保证各数据包到达的顺序和数据包发出的顺序相同。UDP协议提供了快速但不一定可靠的传输服务,UDP协议采用无连接的套接字,不需要在网络设备之间发送连接信息,和TCP相比,UDP缺乏双方的握手信号,因此不保证数据包一定到达目的地,可靠性不如TCP,而且,由于UDP没有任何对双方会话的支持,不能保证各数据包到达的顺序与数据包发出的顺序相同。所以,在文本聊天模块中,采
14、用TCP协议来传输文本信息。客户端用来向服务器端发起一个连接,等待服务器的允许接入确认。若服务器端同意连接请求,接收到服务器的同意连接信号后,开启接收信息线程,并置消息发送事件为Enable,通信双方就可以进行文本聊天了。若服务器端拒绝连接,则释放Socket连接并关闭网络流。若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,不影响到下一次连接的发起。文本聊天程序流程图如图4所示。 图4 文本聊天程序流程图4.2 文件传输模块实现除了文本聊天以外,局域网内另外一个应用是文件的共享。文件共享的实现离不开文件传输。由于TCP协议能保证数据包的准确到达以及各数据包到达
15、的顺序和数据包发出的顺序相同,出于可靠性和效率考虑,本模块也采用TCP协议来进行用户之间文件的传输。开启窗体后,接收端执行监听线程。当接收到客户发起的文件传入请求后,弹出消息提示,提示用户对请求进行处理,同意或者拒绝接收。若同意接收,则弹出文件保存对话框,用户选择文件保存路径并确认后,发送接收信号给文件发送端,启动计时器开始接收文件流,将远程文件保存在本地,并在文件传输过程中对文件传输状态进行反馈,文件接收完毕后,关闭计时器,关闭文件流,并在状态栏上显示出完毕状态。若拒绝接收,则向发送端返回拒绝信号,继续执行监听线程,等待下一次的文件传入请求。文件传输接收端工作流程图如图5所示。图5 文件传输
16、发送端(左)和接收端(右)程序流程图5 系统测试系统测试分为白盒测试和黑盒测试两个部分,白盒测试由自己完成,黑盒测试由同学帮忙完成。首先是白盒测试:在文本聊天程序退出时,常常发生错误,异常退出,造成表面上看程序已结束,但却仍然驻留在内存中的现象。经过反复分析代码,最终确定问题出在程序退出处理流程上,通过修改和调试,问题解决。当两个客户端在建立连接时,出现过程序假死异常。分析代码发现,线程调度出错,接收消息线程还未创建和启动,监听线程已经被销毁了!经过修改代码解决了问题。整个开发过程中,共历经多次相互断开、连接测试,文本聊天模块终于可以正常运行。借助在文本聊天模块开发过程中积累的经验,较顺利的完
17、成了文件传输模块的开发。通过在总集成后的程序的各个流程中添加消息提示框显示程序内部数据、对象的状态,并插入断点进行单步跟踪发现各模块工作正常,数据也未发生异常现象。然后是黑盒测试:黑盒测试又分为功能测试和容错测试。用两台机器通过交换机等构成一个局域网,进行正确的网络配置。先在其中一台机器A上启动服务端软件,开启监听服务。当A机器和B机器启动了客户端软件后,向服务器进行登录操作,服务器端验证了用户的登录后,更新自己的用户表,然后客户端广播自己的信息,互相更新用户表,之后客户端自主的通信,双方正确接收消息,功能测试成功。经检查,当用户输入无效操作时,系统总是能检测到无效操作,对用户进行相应的信息反
18、馈,并合理的做出内部处理。当系统本身发生错误,比如网络初始化失败,绑定套接字失败,数据读取失败等,都会进行相对应的正确处理。容错测试成功。表2列出了部分对系统的测试用例。表2 系统功能测试部分用例表测试项目功能与指标测试方法预期结果结论可登陆性用户可以随时登陆,进入聊天界面按界面提示输入名称出现主窗口和各个菜单项正确完成发出消息给好友可以发出消息给好友在消息框输入消息,并选择好友好友收到消息,正确完成接收到消息用户能接收到其他好友发出的消息当接受到数据时,在窗口显示显示接收到的消息正确完成登陆后的好友上线或下线通知在登陆状态下,能够接收上下线通知启动多个客户端,连接到服务器端,并退出其他好友先
19、显示上线,然后在下线正确完成发送文件在用户已连接时,可以向好友发送文件选择好友,点击发送文件,选择文件然后发送好友收到文件并接受正确完成接收文件在用户已连接时,可以接收好友发送的文件根据提示接收文件成功接收文件正确完成用户注册成功注册后自动更新数据库,并自动登录系统运行系统注册新用户登录成功,数据库更新正确正确完成聊天记录的保存用户下线后,自动保存聊天记录到文本文件登录系统,聊天,退出,查看文件找到保存聊天记录的文本文件正确完成6 总结经过了整整3个月的忙碌,终于完成了毕业设计。在这段时间里体验了无数的酸甜苦辣,从解决不了细小问题的苦恼到问题最终解决的喜悦,一直伴随着整个设计过程。整个设计过程
20、是不断学习,不断发现问题、分析问题、解决问题的过程。使我受益良多。设计期间有许多的感触、想法、经验,教训,对以后的学习、工作有很大的益处。三个多月的时间,略显仓促,系统各方面做的尚不够完善,但我也收获颇多。我充分认识到开发前的需求分析、框架设计、技术选择等环节是多么重要,如果这些前期工作分析充分、设计良好,考虑周全,将会大大提高开发人员的开发效率,使开发思路更明确,开发过程更简单,同时也可避免一些不必要的错误。反之,若对这些环节草草了事,bug将会层出不穷,业务逻辑异常混乱,造成垃圾代码过多等问题,将会造成许多不必要的麻烦。因此对于业务细节,要多思考,才能减少不必要的bug,增强系统健壮性,易
21、用性,为用户提供更多的便利。本设计在查阅了大量的文献后进行理论研究的同时,借鉴了其他聊天程序的功能、吸取了其他聊天程序的优缺点,在此基础上展开了研究工作,归纳起来,论文取得的成果主要有以下几个方面:(1)通过网络编程,设计了基本的聊天功能和文件传输功能。(2)将数据库编程和网络编程相结合,利用Visual Studio 2010这一软件进行Windows编程,将在大学里学到的知识进行了很好的综合。(3)利用TCP/IP协议中的TCP协议,即面向连接的服务,进行数据的传输,对网络中数据的传输过程。参考文献1 (美)特罗尔森 (Andrew Troelsen).C#与.NET 3.5高级程序设计(第4版)M北京:人民邮电出版社,200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论