局域网聊天工具的设计与实现论文.docx
- 文档编号:5621577
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:12
- 大小:144.74KB
局域网聊天工具的设计与实现论文.docx
《局域网聊天工具的设计与实现论文.docx》由会员分享,可在线阅读,更多相关《局域网聊天工具的设计与实现论文.docx(12页珍藏版)》请在冰豆网上搜索。
局域网聊天工具的设计与实现论文
目录
摘要1
1局域网聊天工具概述1
1.1开发目标和意义1
1.2WINDOWSSOCKETS编程1
2系统分析2
2.1需求分析2
2.2性能要求与可行性分析3
3系统设计3
3.1系统功能结构3
3.2系统业务流程分析4
3.3数据库设计5
4系统模块详细设计6
4.1文本聊天模块实现6
4.2文件传输模块实现7
5系统测试8
6总结10
参考文献11
致谢12
局域网聊天工具的设计与实现
摘要:
本文提出并设计了一个局域网聊天工具,并在WINDOWS平台上利用VisualStudio2010加以实现。
本设计将文本聊天和文件传输等功能综合在一个客户端程序之内,使用C#语言进行网络编程,并进行了人性化的界面设计,使用起来简单方便,并且功能十分合理,又易于扩展以及个性化定制。
关键词:
局域网;C/S体系结构;文本聊天;文件传输
TheDesignAndImplementationofTheLANChatTool
Abstract:
ThispaperputforwardanddesignaLANchattingtools,andintheW-
indowsplatformbyusingVisualStudio2010realization.Thisdesignwilltextchata-ndfiletransferareintegrateinaclientprogram,usingC#languagefornetworkprog-ramming,andthehumaninterfacedesign,easytouse,andthefunctionisquitereaso-nable,andeasyexpansionandcustomization.
Keywords:
LAN;C/SArchitecture;Text-Chat;File-Ttransfer
1局域网聊天工具概述
1.1开发目标和意义
本设计的主要工作是设计一个基于WINDOWS平台的局域网即时聊天工具,具体是采用C/S模式实现用户之间的通信,然后阐述本软件的功能、特点及使用方法,并详细阐述开发本软件所用的相关技术,具体分析本软件的各个模块的功能及实现方法,说明本软件的设计思想及方法。
局域网聊天工具,是在局域网内部使用的,用户之间用来交流的一个工具,一般都具有文本聊天和文件传输功能。
局域网聊天软件因其使用简单,系统资源消耗少等优点,成为各企事业单位等的局域网内广泛应用的软件之一。
1.2WINDOWSSOCKETS编程
通常的通信工具,都采用客户机/服务器(C/S)体系结构,C/S结构是这样的一种结构:
它包括客户机和服务器。
客户机的作用是访问和处理远程服务器上的数据,服务器的作用是接收和处理客户机的数据请求。
Client/Server结构是当前数据库应用程序中极为流行的一种方式。
尤其是网络技术的发展,使得当前很多系统都采用这种方式进行构造,其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。
另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。
Client/Server模型最终可归结为一种“请求/应答”关系。
一个请求总是首先被客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。
在客户发出一个请求之前,服务进程一直处于休眠状态。
一个客户提出请求后,服务进程被“唤醒”并且为客户提供服务,对客户的请求做出所需要的应答。
2系统分析
2.1需求分析
随着中小型企事业的不断发展,在企业内部实现局域网通信是必不可少的。
局域聊工具就是一个非常好的局域网通信软件,它可以在职工不移动位置的情况下进行在线聊天、文件传递。
这样,可以大大提高企业的工作效率,便于企业内部职员的交流。
根据用户对聊天工具的要求,可分为以下几点:
(1)操作简单方便、界面简洁美观;
(2)可以在局域网实现文字和文件的传输;
(3)可以实现用户的注册、登录和注销;
(4)程序启动之后就能看到当前哪些机器在线,哪些可以与之进行对等通信。
可以实现局域网聊天;
(5)一旦有某个网内的机器上线了,要有即时通知,并能及时更新用户界面中的用户列表;
(6)当单击用户列表项的时候,直接在聊天对话框聊天,发送聊天信息;
(7)当有远程用户向本机发送文件的时候,弹出一个消息提示,用户可选择接收或者拒绝;
(8)文件传输过程中,应该有当前传输状态提示,并作为当前网络状态的一种反馈;
(9)为用户提供一个简单的聊天记录保存功能。
2.2性能要求与可行性分析
在性能上,首先要求程序要完全可靠,可以应付各种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。
要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。
程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。
要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。
并且不发生内存泄漏之类影响系统运行的错误事件。
并且要求易于维护及扩展。
所以应该采用模块化开发,各个模块之间不要有太多的耦合,以免维护困难。
在成本可行性上,本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。
在技术可行性上,开发所需要的软硬件平台已经搭建好,并进行了合理而完善的需求分析,做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与C#开发环境的严密契合能力,与更大规模的INTERNET通信工具产品也已有例在先,所以这个程序的开发在技术上是完全可行的。
3系统设计
3.1系统功能结构
本系统中主要包括两个部分:
服务器端和客户端。
(1)服务器端的功能包括:
验证登录:
检查登陆信息是否正确,并向客户端返回登陆信息,如信息正确。
就将在线用户发给该用户,并将该用户的状态发给各在线用户。
同时在服务器端显示出来。
处理注册信息:
用户提交注册信息后,自动验证是否重名,如果重名则返回提示,如果不重名则将信息加入数据库。
发布系统消息:
将此用户上线、下线消息发给各客户端,并在服务器端显示在线用户信息。
保存聊天记录:
在接收到用户保存聊天记录申请的同时自动保存聊天记录为文本文件。
服务器功能结构如下图1所示:
图1服务器端功能结构图
(2)客户端的功能包括:
用户登录:
建立与服务器的连接并登陆,能显示登陆错误信息。
用户注册:
建立与服务器连接并提交注册信息,注册成功后自动登录。
界面显示:
登录成功后,自动显示在线用户列表。
发送消息:
选择要发送对象后,可以发送文本消息或者文件。
接收消息:
收到其他用户消息后,提醒并显示。
接收文件时可以选择接收或拒绝。
聊天记录的保存:
用户下线前自动向服务器发送申请保存聊天记录。
客户端功能结构如下图2所示。
图2客户端功能结构图
3.2系统业务流程分析
首先又服务器开启服务,监听局域网中客户端的连接请求,客户端连接后,登陆或者处理注册信息,并返回操作结果,客户端注册或者登陆成功后,显示聊天窗体,此时各客户端将自主的监听局域网中的用户,实时更新自己的用户列表并显示,各个客户端之间的信息交流不再通过服务器转发,而是自主通信。
局域网聊天系统的业务流程图如图3所示。
图3系统业务流程图
3.3数据库设计
(1)数据库表的设计
系统需求主要体现在用户的注册、登录、发送消息、接收消息、聊天记录的保存等方面,而本系统发送消息,接收消息,聊天记录保存均有客户端自主完成,因此不需要体现在数据库中,这样数据库只需储存用户的信息即可。
所以只需要建立1个表:
用户表。
用户表结构如表1所示。
表1用户表(Users)
列名
数据类型
允许空
userID
Int
主键
userName
Nchar(10)
不能为空
passWord
Nchar(10)
不能为空
(2)存储过程和触发器的设计
存储过程是指将常用的或复杂的数据库操作,预先用sql语句写好并用一个指定的名称存储在数据库中,以后在调用存储过程时,只需要指定存储过程的名称和参数即可。
本系统主要有登录验证、用户注册两个存储过程。
登录验证(loginProcedure):
在用户登录时,由服务器调用,验证用户的用户名和密码是否正确。
用户注册(regProcedure):
用户注册时,由服务器调用添加新用户。
4系统模块详细设计
4.1文本聊天模块实现
凡是聊天工具,都少不了文本聊天功能,这是个基础功能。
通过文本聊天,局域网内用户能够发送和接收文字信息,并在程序窗体上显示出来,相互之间进行在线交流,并能根据用户需要,对聊天记录进行简单的保存。
文本聊天的信息传输协议主要有面向连接的TCP和无连接的UDP。
TCP协议是互联网中最重的协议之一,主要特点是:
保证数据包的准确到达;保证各数据包到达的顺序和数据包发出的顺序相同。
UDP协议提供了快速但不一定可靠的传输服务,UDP协议采用无连接的套接字,不需要在网络设备之间发送连接信息,和TCP相比,UDP缺乏双方的握手信号,因此不保证数据包一定到达目的地,可靠性不如TCP,而且,由于UDP没有任何对双方会话的支持,不能保证各数据包到达的顺序与数据包发出的顺序相同。
所以,在文本聊天模块中,采用TCP协议来传输文本信息。
客户端用来向服务器端发起一个连接,等待服务器的允许接入确认。
若服务器端同意连接请求,接收到服务器的同意连接信号后,开启接收信息线程,并置消息发送事件为Enable,通信双方就可以进行文本聊天了。
若服务器端拒绝连接,则释放Socket连接并关闭网络流。
若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,不影响到下一次连接的发起。
文本聊天程序流程图如图4所示。
图4文本聊天程序流程图
4.2文件传输模块实现
除了文本聊天以外,局域网内另外一个应用是文件的共享。
文件共享的实现离不开文件传输。
由于TCP协议能保证数据包的准确到达以及各数据包到达的顺序和数据包发出的顺序相同,出于可靠性和效率考虑,本模块也采用TCP协议来进行用户之间文件的传输。
开启窗体后,接收端执行监听线程。
当接收到客户发起的文件传入请求后,弹出消息提示,提示用户对请求进行处理,同意或者拒绝接收。
若同意接收,则弹出文件保存对话框,用户选择文件保存路径并确认后,发送接收信号给文件发送端,启动计时器开始接收文件流,将远程文件保存在本地,并在文件传输过程中对文件传输状态进行反馈,文件接收完毕后,关闭计时器,关闭文件流,并在状态栏上显示出完毕状态。
若拒绝接收,则向发送端返回拒绝信号,继续执行监听线程,等待下一次的文件传入请求。
文件传输接收端工作流程图如图5所示。
图5文件传输发送端(左)和接收端(右)程序流程图
5系统测试
系统测试分为白盒测试和黑盒测试两个部分,白盒测试由自己完成,黑盒测试由同学帮忙完成。
首先是白盒测试:
在文本聊天程序退出时,常常发生错误,异常退出,造成表面上看程序已结束,但却仍然驻留在内存中的现象。
经过反复分析代码,最终确定问题出在程序退出处理流程上,通过修改和调试,问题解决。
当两个客户端在建立连接时,出现过程序假死异常。
分析代码发现,线程调度出错,接收消息线程还未创建和启动,监听线程已经被销毁了!
经过修改代码解决了问题。
整个开发过程中,共历经多次相互断开、连接测试,文本聊天模块终于可以正常运行。
借助在文本聊天模块开发过程中积累的经验,较顺利的完成了文件传输模块的开发。
通过在总集成后的程序的各个流程中添加消息提示框显示程序内部数据、对象的状态,并插入断点进行单步跟踪发现各模块工作正常,数据也未发生异常现象。
然后是黑盒测试:
黑盒测试又分为功能测试和容错测试。
用两台机器通过交换机等构成一个局域网,进行正确的网络配置。
先在其中一台机器A上启动服务端软件,开启监听服务。
当A机器和B机器启动了客户端软件后,向服务器进行登录操作,服务器端验证了用户的登录后,更新自己的用户表,然后客户端广播自己的信息,互相更新用户表,之后客户端自主的通信,双方正确接收消息,功能测试成功。
经检查,当用户输入无效操作时,系统总是能检测到无效操作,对用户进行相应的信息反馈,并合理的做出内部处理。
当系统本身发生错误,比如网络初始化失败,绑定套接字失败,数据读取失败等,都会进行相对应的正确处理。
容错测试成功。
表2列出了部分对系统的测试用例。
表2系统功能测试部分用例表
测试项目
功能与指标
测试方法
预期结果
结论
可登陆性
用户可以随时登陆,进入聊天界面
按界面提示输入名称
出现主窗口和各个菜单项
正确完成
发出消息给好友
可以发出消息给好友
在消息框输入消息,并选择好友
好友收到消息,
正确完成
接收到消息
用户能接收到其他好友发出的消息
当接受到数据时,在窗口显示
显示接收到的消息
正确完成
登陆后的好友上线或下线通知
在登陆状态下,能够接收上下线通知
启动多个客户端,连接到服务器端,并退出
其他好友先显示上线,然后在下线
正确完成
发送文件
在用户已连接时,可以向好友发送文件
选择好友,点击发送文件,选择文件然后发送
好友收到文件并接受
正确完成
接收文件
在用户已连接时,可以接收好友发送的文件
根据提示接收文件
成功接收文件
正确完成
用户注册
成功注册后自动更新数据库,并自动登录系统
运行系统注册新用户
登录成功,数据库更新正确
正确完成
聊天记录的保存
用户下线后,自动保存聊天记录到文本文件
登录系统,聊天,退出,查看文件
找到保存聊天记录的文本文件
正确完成
6总结
经过了整整3个月的忙碌,终于完成了毕业设计。
在这段时间里体验了无数的酸甜苦辣,从解决不了细小问题的苦恼到问题最终解决的喜悦,一直伴随着整个设计过程。
整个设计过程是不断学习,不断发现问题、分析问题、解决问题的过程。
使我受益良多。
设计期间有许多的感触、想法、经验,教训,对以后的学习、工作有很大的益处。
三个多月的时间,略显仓促,系统各方面做的尚不够完善,但我也收获颇多。
我充分认识到开发前的需求分析、框架设计、技术选择等环节是多么重要,如果这些前期工作分析充分、设计良好,考虑周全,将会大大提高开发人员的开发效率,使开发思路更明确,开发过程更简单,同时也可避免一些不必要的错误。
反之,若对这些环节草草了事,bug将会层出不穷,业务逻辑异常混乱,造成垃圾代码过多等问题,将会造成许多不必要的麻烦。
因此对于业务细节,要多思考,才能减少不必要的bug,增强系统健壮性,易用性,为用户提供更多的便利。
本设计在查阅了大量的文献后进行理论研究的同时,借鉴了其他聊天程序的功能、吸取了其他聊天程序的优缺点,在此基础上展开了研究工作,归纳起来,论文取得的成果主要有以下几个方面:
(1)通过网络编程,设计了基本的聊天功能和文件传输功能。
(2)将数据库编程和网络编程相结合,利用VisualStudio2010这一软件进行Windows编程,将在大学里学到的知识进行了很好的综合。
(3)利用TCP/IP协议中的TCP协议,即面向连接的服务,进行数据的传输,对网络中数据的传输过程。
参考文献
[1](美)特罗尔森(AndrewTroelsen).C#与.NET3.5高级程序设计(第4版)[M].北京:
人民邮电出版社,2009:
14-72.
[2](美)AndersHejlsberg.C#編程语言详解[M].电子工程出版社,2004,(11):
270-277.
[3]文斌,刘长青,田原.软件工程与软件文档写作[M].北京:
清华大学出版社、北京交通大学出版社,2005:
20-40.
[4]刘骏,颜钢锋.基于Socket的网络编程技术及其实现[J].江南大学学报,2004,3(3):
249-251.
[5]仇谷锋.VisualC#.NET网络编程[M].北京:
清华大学出版社,2004,:
78-125.
[6](美)HarveyM.Deitel.C#大学教程[M].北京:
电子工业出版社,2004:
50-60.
[7]耿肇英,耿燚.C#应用程序教程[M].北京:
人民邮电出版社,2007:
45-52.
[8]孙玉钰.基于P2P网络的聊天系统的研发[J].长春大学学报,2006:
61-65.
[9]张晓.王忠仁.一种基于CS和P2P混合结构的IM系统的设计与实现[J](4).成都信息工程学院学报,2006:
528-531.
[10]刘丽,梁对.即时通信系统的设计与实现[C].通信指挥学院,2006:
386-389.
致谢
毕业设计完成之际,我由衷地感谢指导老师的大力帮助和支持,感谢我的同学与朋友,在我遇到各种各样复杂问题的时候,给与我鼓励和帮助,使我的分析问题和解决问题能力有了很大的提高。
设计期间,指导老师严肃的科学态度、严谨的治学精神、精益求精的工作作风深深地感染和激励着我。
从课题的选择到项目的最终完成,都始终给予我细心的指导和不懈的支持。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 局域网 聊天工具 设计 实现 论文