基于NET的局域网聊天工具.docx

上传人:b****5 文档编号:5331928 上传时间:2022-12-15 格式:DOCX 页数:12 大小:127.19KB
下载 相关 举报
基于NET的局域网聊天工具.docx_第1页
第1页 / 共12页
基于NET的局域网聊天工具.docx_第2页
第2页 / 共12页
基于NET的局域网聊天工具.docx_第3页
第3页 / 共12页
基于NET的局域网聊天工具.docx_第4页
第4页 / 共12页
基于NET的局域网聊天工具.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于NET的局域网聊天工具.docx

《基于NET的局域网聊天工具.docx》由会员分享,可在线阅读,更多相关《基于NET的局域网聊天工具.docx(12页珍藏版)》请在冰豆网上搜索。

基于NET的局域网聊天工具.docx

基于NET的局域网聊天工具

目录

基于.NET局域网聊天工具设计2

基于.NET局域网聊天工具设计2

摘要2

关键词2

1.局域网聊天工具概述2

1.1聊天工具开发的目标意义2

1.2C/S结构与WindowsSocket网络编程2

2.需求分析3

2.1用户需求3

2.2系统功能需求3

2.4测试环境规定3

2.5可行性研究4

3系统设计4

3.1系统功能结构4

3.2系统功能需求5

3.3性能要求5

4.系统模块详细设计6

4.1文本聊天模块实现6

4.1.1文本聊天流程6

4.1.2界面设计7

4.2文件传输模块实现8

4.2.1文件传输流程8

4.2.3界面设计8

5.系统测试9

5.1系统测试概述9

5.2白盒测试9

5.3黑盒测试9

6.主要问题及解决10

6.1多线程问题10

6.2套接字异常10

6.3网络流异常10

参考文献10

TheDesignofLANChatToolBasedon.Net12

Abstract12

Keywords12

致谢13

基于.NET局域网聊天工具设计

个人信息

摘要:

现在很多政府机构、企业、学校都是以一个统一的局域网联结在一起,再分别接入INTERNET。

因此基于局域网的即时通信工具,就这样应运而生了。

本文提出了一个局域网聊天工具的设计,并在WINDOWS平台上加以了实现。

本设计将文本聊天和文件传输等功能综合在一个客户端程序之内,使用C#语言进行网络编程,并进行了人性化的界面设计,使用起来简单方便,并且功能十分合理,又易于扩展以及个性化定制。

关键词:

局域网;C/S体系结构;文本聊天;文件传输

1.局域网聊天工具概述

1.1聊天工具开发的目标意义

本设计的主要工作是设计一个基于Windows平台的局域网即时聊天工具,具体是采用C/S模式实现用户之间的通信,然后阐述本软件的功能、特点及使用方法,并详细阐述开发本软件所用的相关技术,具体分析本软件的各个模块的功能及实现方法,说明本软件的设计思想及方法。

局域网聊天工具,是在局域网内部使用的,用户之间用来交流的一个工具,一般都具有文本聊天和文件传输功能。

局域网聊天软件因其使用简单,系统资源消耗少等优点,成为各企事业单位等的局域网内广泛应用的软件之一。

1.2C/S结构与WindowsSocket网络编程

通常的通信工具,都采用客户机/服务器(C/S)体系结构,C/S结构是这样的一种结构:

它包括客户机,一个服务器,客户机的作用是访问和处理远程服务器上的数据,服务器的作用是接收和处理客户机的数据请求。

Client/Server结构是当前数据库应用程序中极为流行的一种方式。

尤其是网络技术的发展,使得当前很多系统都采用这种方式进行构造,其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。

另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。

Client/Server模型最终可归结为一种“请求/应答”关系。

一个请求总是首先被客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。

在客户发出一个请求之前,服务进程一直处于休眠状态。

一个客户提出请求后,服务进程被“唤醒”并且为客户提供服务,对客户的请求做出所需要的应答。

在IP连接领域有两种通信类型:

面向连接的(Connection-oriented)和无连接的(Connectionless)。

在面向连接的套接字中,使用TCP协议来建立两个IP地址端点之间的会话。

一旦建立了这种连接,就可以在设备之间可靠地传输数据。

为了建立面向连接的套

接字,服务器端和客户端必须分别进行编程。

在System.Net.Sockets名空间下,有两个专门用于TCP协议编程的类:

TcpClient类和TcpListener类。

这两个类提供了直观的易于使用的属性和方法,从而降低了TCP协议编程的难度。

一般情况下,使用TcpClient连接、发送和接收数据,使用TcpListener监听是否有传入的连接请求,使用Close()方法释放与TcpClient关联的所有资源。

2.需求分析

2.1用户需求

随着中小型企事业的不断发展,在企业内部实现局域网通信是必不可少的。

局域聊工具就是一个非常好的局域网通信软件,它可以在职工不移动位置的情况下进行在线聊天、文件传递。

这样,可以大大提高企业的工作效率,便于企业内部职员的交流。

根据用户对聊天工具的要求,可分为以下几点:

1.操作简单方便、界面简洁美观。

2.可以在局域网实现文字和文件的传输。

3.可以进行聊天记录保存。

4.可以实现局域网聊天。

5.系统运行稳定、安全可靠。

2.2系统功能需求

这个程序要实现的功能如下:

1.程序启动之后就能看到当前哪些机器在线,哪些可以与之进行对等通信。

2.一旦有某个网内的机器上线了,要有即时通知,并能及时更新用户界面中的用户列表。

3.当单击用户列表项的时候,直接在聊天对话框打字聊天,发送的聊天信息。

4.当有远程用户向本机发送文件的时候,弹出一个消息提示,用户可选择接收或者拒绝。

5.为用户提供一个简单的聊天记录保存功能。

6.文件传输过程中,应该有当前传输状态提示,并作为当前网络状态的一种反馈。

2.4测试环境规定

在开发过程中由开发人员自己,随时进行内部部分白盒测试,在开发完成以后,自己进行一个全面的白盒测试,然后请同学帮忙进行黑盒测试。

2.5可行性研究

1.成本可行性分析

本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。

2.技术可行性分析

开发所需要的软硬件平台已经搭建好,并进行了合理而完善的需求分析,做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与C#开发环境的严密契合能力,与更大规模的INTERNET通信工具产品也已有例在先,所以这个程序的开发在技术上是完全可行的。

3系统设计

3.1系统功能结构

本系统中主要包括两个部分:

服务器端和客户端。

1.服务器端的功能包括:

验证客户登录、添加新用户、传输用户信息。

服务器功能结构如图3-1所示:

图2-1服务器端功能结构

2.客户端的功能包括:

用户登录、文本聊天、文件传输。

客户端功能结构如图3-1所示:

图2-2客户端功能结构

3.2系统功能需求

这个程序要实现的功能如下:

1.程序启动之后就能看到当前哪些机器在线,哪些可以与之进行对等通信。

2.一旦有某个网内的机器上线了,要有即时通知,并能及时更新用户界面中的用户列表。

3.当单击用户列表项的时候,直接在聊天对话框打字聊天,可以在其中编辑要发送的聊天信息,并进行发送。

4.聊天界面要人性化,下面是发送框,上面有已有聊天记录,并借助滚动条看到当次所有的聊天记录。

5.当有远程用户向本机发送文件的时候,要弹出一个消息提示,提示本机用户,可以选择接收或者拒绝。

6.为用户提供一个简单的聊天记录保存功能。

7.文件传输过程中,应该有当前传输状态提示,并作为当前网络状态的一种反馈。

3.3性能要求

首先要求程序要完全可靠,可以应付各种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。

要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。

程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。

要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。

并且不发生内存泄漏之类影响系统运行的错误事件。

并且要求易于维护及扩展。

所以应该采用模块化开发,各个模块之间不要有太多的耦合,以免维护困难。

4.系统模块详细设计

4.1文本聊天模块实现

4.1.1文本聊天流程

开启服务器,文本聊天窗体加载成功后,将启动监听线程,服务器主要是负责监听局域网内的用户的连接请求。

收到客户发起的连接请求后,若服务器处于空闲状态,弹出消息提示框,对请求进行处理,服务器可以选择接受或者拒绝客户端的连接。

若同意连接,则返回给客户端同意信号,开启服务器的接收信息线程,并置消息发送事件为Enable。

客户端收到服务器返回的同意信号后,也开启接收信息线程,并置消息发送事件为Enable。

通信双方就可以进行文字聊天了。

若服务器端拒绝客户端的连接,则关闭tcpconnect,并关闭网络流,继续执行监听。

客户端得知服务器端关闭tcpconnect并关闭网络流之后,则释放本次socket和网络流。

若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,不影响到下一次连接的接入。

文本聊天服务器工作流程如图5-1所示。

客户端用来向服务器端发起一个连接,等待服务器的允许接入确认。

若服务器端同意连接请求,接收到服务器的同意连接信号后,开启接收信息线程,并置消息发送事件为Enable,通信双方就可以进行文本聊天了。

若服务器端拒绝连接,则释放Socket连接并关闭网络流。

若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,不影响到下一次连接的发起。

如图:

图4-1文本聊天程序流程图

4.1.2界面设计

如图4-2客户端和服务器界面

客户端采用当前流行的QQ相仿界面,而服务器界面能够简洁明朗的显示客户信息。

在设计的时候,采用了一些通俗易懂的图片、按钮和菜单选项,使得整体界面整洁,操作简单,设计人性化。

4.2文件传输模块实现

4.2.1文件传输流程

开启窗体后,接收端执行监听线程。

当接收到客户发起的文件传入请求后,弹出消息提示,提示用户对请求进行处理,同意或者拒绝接收。

若同意接收,则弹出文件保存对话框,用户选择文件保存路径并确认后,发送接收信号给文件发送端,启动计时器开始接收文件流,将远程文件保存在本地,并在文件传输过程中对文件传输状态进行反馈,文件接收完毕后,关闭计时器,关闭文件流,并在状态栏上显示出完毕状态。

若拒绝接收,则向发送端返回拒绝信号,继续执行监听线程,等待下一次的文件传入请求。

文件传输接收端工作流程图如图4-2所示。

图4-2文件传输接收端程序流程图

4.2.3界面设计

开启窗体后,发送端选择用户需要发送的文件,向接收端发起的文件传输请求,若接收端端同意接收,开启计时器,将本地文件通过网络发送给接收端,并在文件传输过程中对文件传输状态进行反馈,文件发送完毕,关闭计时器,关闭文件流,并在状态栏上显示出完毕状态。

若接收端拒绝接受文件,则取消本次文件发送,等待用户的下一次文件发送事件。

文件传输模块的界面如图4-3所示:

图4-3文件传输接收图

5.系统测试

5.1系统测试概述

测试的目的是为了发现功能是否达到,或者是否有更多的缺陷;测试只能证明缺陷存在,而不能证明缺陷不存在;测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试;关于测试人员的安排,由我本人做白盒测试,由同学帮助做黑盒测试。

5.2白盒测试

正确性测试检查软件的功能是否符合规格说明。

由于正确性是软件最重要的质量因素,所以其测试也最重要。

在集成P2P文本聊天程序退出时,常常发生错误,异常退出,造成表面上看程序已结束,但却仍然驻留在内存中的现象。

经过反复分析代码,最终确定问题出在程序退出处理流程上,通过修改和调试,问题解决。

整个开发过程中,共历经多次相互断开、连接测试,P2P文本聊天模块终于可以正常运行。

借助在P2P文本聊天模块开发过程中积累的经验,较顺利的完成了P2P文件传输模块的开发。

通过在总集成后的程序的各个流程中添加消息提示框显示程序内部数据、对象的状态,并插入断点进行单步跟踪发现各模块工作正常,数据也未发生异常现象。

5.3黑盒测试

用两台或两台以上机器通过交换机等构成一个局域网,进行正确的网络配置,每台机器上都安装了WINDOWS操作系统、DirectXSDK以及.NET2.0,并安装了本软件的正确拷贝。

先在其中一台机器A上启动服务端软件,开启监听服务。

当A机器和B机器启动了客户端软件后,向服务器进行登录操作,服务器端验证了用户的登录后,向局域网广播客户端的登录状态。

此时就在客户端与服务器上进行功能性测试。

最后对系统软件进行容错性测试。

容错性测试是检查软件在异常条件下的行为。

容错性好的软件能确保系统不发生无法意料的事故。

6.主要问题及解决

6.1多线程问题

通过查阅资料,掌握了C#中在winform关闭时需要进行的操作:

1、接收线程需要关闭;2、监听需要关闭;3、Socket需要关闭;4、网络流需要关闭;5、如果是传文件的话还需要关闭流文件。

在后来经过不断的修改和大量的测试,终于将这个bug解决了。

通过对这个问题的解决,掌握了C#中的使用多线程时,线程的创建、相互协调和销毁等技术。

6.2套接字异常

在文本聊天模块测试时,通过在两个用户间连续地连接、断开,出现Socket异常,因为Socket在使用时,一个IPEndpoint只能使用一次,如果本地在使用某个IPEndpoint,远程主机断开连接后,本地并没有释放此Socket,当远程主机再次尝试连接此IPEndpoint时,将出现Socket异常。

解决的办法就是在断开连接的时候,向对方发送“断开”信号,对方接收到断开信号后,将其自身的Socket释放掉。

6.3网络流异常

消息的传递离不开网络流操作,在编写文本聊天模块时,碰到网络流异常。

当互相连接的两个用户之间,任意一方在退出的时候,需要向对方发送“断开”信号,并随后关闭其自身的网络流,而对方在接收到“断开”信号的时候,有个处理过程,但是流却已经关闭了,所以产生流异常,“本地主机尝试读取一个不存在的流”,通过修改,对网络流使用try{}catch{}操作后,问题解决。

参考文献

[1](美)特罗尔森(Andrewtroelsen).C#与.NET3.5高级程序设计(第4版)[M].北京:

人民邮电出版社,2009:

14-72.

[2](美)AndersHejlsberg.C#編程语言详解[M](11).电子工程出版社,2004:

270-277.

[3]文斌,刘长青,田原.软件工程与软件文档写作[M].北京:

清华大学出版社、北京交通大学出版社,2005:

20~40.

[4]周存杰.VisualC#.NET网络核心编程[M](07).北京:

清华大学出版社,2002,:

167~186.

[5]耿肇英,耿燚.C#应用程序教程[M].北京:

人民邮电出版社,2007:

45~52.

[6]刘丽,梁对.即时通信系统的设计与实现[C].通信指挥学院,2006:

386-389.

[7]孙玉钰.基于P2P网络的聊天系统的研发[J].长春大学学报,2006:

61-65.

[8]张晓.王忠仁.一种基于CS和P2P混合结构的IM系统的设计与实现[J](4).成都信息工程学院学报,2006:

528-531.

[9](美)GaryR.WrightW.RichardStevens.TCP/IP.北京.出版社:

机械工业出版.2002:

95-365.

TheDesignofLANChatToolBasedon.Net

Abstract:

Alongwiththehigh-speeddevelopmentofthecomputernetworktechnology,variousofapplicationswhicharebasedonnetworkwereborn,suchasInternet-basedinformationreleasing,communications,datasharingandsoon.ThedevelopmentofLANisthesamefast.BecauseofSomegovernmentinstitutions,enterprisesandschoolsconstituteaLANfirst,thenjoinintoINTERNET,thereal-timeLAN-basedcommunicationtoolsemerged.thispaperproposedaLANchattooldesigning,andthenimplementitonWINDOWSplatform.Thedesignintegratedtext-chatandfile-transferandotherfunctionsinaclientprocedure.ItusedC#languagefornetworkprogrammingwithdesignedauser-friendlyandeasytouseinterface,andit'sfunctionsarereasonableandeasytoextend,aswellascustomization.

Keywords:

LAN;C/SArchitecture;text-chat;file-transfer;

致谢

本论文是在导师张少辉的悉心指导下完成的,从选题到完成,每一步都是在张老师的指导下完成的,倾注了导师大量的心血。

在此,谨向导师表示崇高的敬意和衷心的感谢!

本论文的顺利完成,更离不开各位老师、同学和朋友的关心和帮助。

也要感谢我的室友们,从遥远的家来到这个陌生的城市里,是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽。

两年了,仿佛就在昨天。

两年里,我们没有红过脸,没有吵过嘴,没有发生上大学前所担心的任何不开心的事情。

只是今后大家就难得再聚在一起吃每年元旦那顿饭了吧,没关系,各奔前程,大家珍重。

但愿远赴他乡的平平安安,继续上学深造的快快乐乐,工作的顺顺利利。

我们在一起的日子,我会记一辈子的。

感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。

在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1