设计毕业论文局域网聊天工具 定稿.doc

上传人:laozhun 文档编号:3993175 上传时间:2023-03-30 格式:DOC 页数:49 大小:422.50KB
返回 下载 相关 举报
设计毕业论文局域网聊天工具 定稿.doc_第1页
第1页 / 共49页
设计毕业论文局域网聊天工具 定稿.doc_第2页
第2页 / 共49页
设计毕业论文局域网聊天工具 定稿.doc_第3页
第3页 / 共49页
设计毕业论文局域网聊天工具 定稿.doc_第4页
第4页 / 共49页
设计毕业论文局域网聊天工具 定稿.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《设计毕业论文局域网聊天工具 定稿.doc》由会员分享,可在线阅读,更多相关《设计毕业论文局域网聊天工具 定稿.doc(49页珍藏版)》请在三一办公上搜索。

1、目录局域网聊天工具设计1文本聊天、文件传输及用户管理1LAN Chat Tool Design2Text chat, file transfer and user management2第1章 引言31.1 系统开发的背景31.2 聊天工具开发的目标31.3 聊天工具开发的现实意义3第2章 开发平台与相关知识简介52.1 系统综合要求52.1.1 硬件要求:52.1.2 程序运行环境:52.2 C# 简介52.3 MicroSoft .NET Framework 简介52.4 Microsoft DirectX SDK 简介62.5 .NET 与多线程技术62.6 C/S结构与WINDOWS

2、SOCKETS网络编程62.7 XML简介9第3章 需求分析103.1 用户需求103.2 系统功能需求103.3 性能要求103.4 测试环境规定113.5 可行性研究11第4章 系统设计124.1 系统目标124.2 系统功能结构124.3 业务流程图134.4 系统模块划分13第5章 系统模块详细设计145.1 文本聊天模块实现145.1.1 文本聊天模块概述145.1.2 文本聊天服务器工作原理145.1.3 文本聊天客户端工作原理155.1.4 P2P文本聊天165.2 文件传输模块实现195.2.1 文件传输模块概述195.2.2 文件传输接收端工作原理195.2.3 文件传输发送

3、端工作原理205.2.4 P2P文件传输215.3 用户管理模块实现245.3.1 用户管理模块概述245.3.2 用户数据模型245.3.3 XML文档结构设计255.3.4 用户信息的保存255.3.5 用户数据的遍历26第6章 系统测试286.1 系统测试概述286.2 白盒测试286.2.1 测试环境配置286.2.2 正确性测试286.3 黑盒测试296.3.1 测试环境配置296.3.2 功能性测试296.3.3 容错性测试296.3.4 性能与效率测试306.3.5 易用性测试316.3.6 文档测试31第7章 主要问题及解决327.1 多线程问题327.2 套接字异常327.3

4、 网络流异常32参考文献33附录34局域网聊天工具设计 文本聊天、文件传输及用户管理摘要:随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。局域网的发展也同样迅速。很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET。因此基于局域网的即时通信工具,就这样应运而生了。本文提出了一个局域网聊天工具的设计,并在WINDOWS平台上加以了实现。本设计将语音聊天、文本聊天和文件传输等功能综合在一个客户端程序之内,使用C#语言进行网络编程,用多线程实现不同的并行任务,使用可扩展标记语言xml进行简单的数据存储和管理

5、,并进行了人性化的界面设计,使用起来简单方便,并且功能十分合理,又易于扩展以及个性化定制。关键词:局域网;文本聊天;文件传输;可扩展标记语言;多线程 LAN Chat Tool DesignText chat, file transfer and user managementAbstract:Along with the high-speed development of the computer network technology, various of applications which are based on network were born, such as Internet

6、-based information releasing,communications,data sharing and so on. The development of LAN is the same fast. Because of Some government institutions, enterprises and schools constitute a LAN first ,then join into INTERNET, the real-time LAN-based communication tools emerged. this paper proposed a LA

7、N chat tool designing, and then implement it on WINDOWS platform. The design integrated voice-chat, text-chat and file-transfer and other functions in a client procedure. It used C # language for network programming with multi-threaded parallel to achieve different tasks, and it used xml to make sim

8、ple data storage and management come true, and designed a user-friendly and easy to use interface , and its functions are reasonable and easy to extend, as well as customization.Key words: LAN; text-chat; file-transfer; xml; multi-threaded第1章 引言1.1 系统开发的背景当今世界正处于信息时代,计算机和通信网络是这一时代所谓“信息基础设施”。随着网络的普及化

9、,网络作为人们相互间沟通与交流联系的现代化工具日益重要,可以说现在人们的生活已经离不开网络。在现实生活中人们可以通过多种手段与家人亲戚朋友交流通讯,像电话,电子邮件等。但这些手段都有些缺点,要么费用太高,要么实时性不强,要么1次只能和1位好友进行交流。于是这就需要1种便宜,快速,能同时与多个好友进行通讯的网络工具的出现,而网络聊天工具就满足了这些需求,填补了这个空白。在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。聊天室程序可以说是网上最简单的多点通信程序。一个简单的聊天室, 从程序员的观点来看就是在多个I/O端点之间实现多对多的通信。广域网上的即时通信工具,如今一般

10、采用UDP或者 TCP协议体系来实现,开发技术已经比较成熟,这些软件,在使用方面各有特色,在实现方面也各有所长,但基于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是利用各种平台上的网络通信接口,建构基于TCP/IP,或者UDP协议的软件产品。网络的飞速发展使网络应用程序的开发地位显的越来越重要,而网络应用程序的开发和传统应用程序的开发在思想和实现上有很大的区别,随着网络技术和数据库管理系统的发展,C/S体系结构在软件的开发中越来越流行。因为这种结构的应用软件可以充分发挥网络的作用和数据库系统的优势,以满足人们各种应用的需求。1.2 聊天工具开发的

11、目标本设计的主要工作是设计一个基于WINDOWS平台的局域网即时聊天工具,具体是采用P2P模式实现用户之间的通信,然后阐述本软件的功能、特点及使用方法,并详细阐述开发本软件所用的相关技术,具体分析本软件的各个模块的功能及实现方法,说明本软件的设计思想及方法。1.3 聊天工具开发的现实意义局域网聊天工具,是在局域网内部使用的,用户之间用来交流的一个工具,一般都具有文本聊天和文件传输功能。局域网聊天软件因其使用简单,系统资源消耗少等优点,成为各企事业单位等的局域网内广泛应用的软件之一。当前的局域网聊天工具有很多,最有名的算IPMSG(飞鸽传书)。Ipmsg能够实现局域网内消息、文件传递。但是,ip

12、msg 在某些时候,在同一vlan下的用户,能够彼此看见对方,却不能通信,因为其采用的是udp协议作为消息传递协议,而这种传输是不稳定的,所以有时候能看到对方的用户之间不能实现互相通信,怎么办呢?一种解决方法就是,采用tcp协议,面向连接的传输层协议作为消息传递协议,开发出相应的网络应用程序就能够实现彼此连接的双方进行信息的传递。随着互联网的不断发展,“互联网要担当起通讯大任”的声音不绝于耳。未来的电信业务将呈现多元化格局。同样是话音业务,可能是PSTN网络(传统电话网)提供的,可能是Internet提供的,还可能是有线电视网络,甚至电力网、煤气管道网提供的。而用户的选择也将包括电脑与电脑、电

13、脑与电话、电话与电话、电话与(智能)手机等通话方式。这一切,都是以IP为基础的通讯网络,而非传统通讯模式的电信服务。所以,VOIP将是聊天工具的一个发展方向。现有的局域网聊天工具,一般都不具备语音聊天的功能,本软件集成了语音聊天模块,用户可以通过此软件实现语音互通,提高局域网用户之间信息传递效率以及交流质量。通过开发本软件,可以了解当前流行的voip技术,练习socket编程,扩展知识面,锻炼编程的能力等,所以极具研究价值。第2章 开发平台与相关知识简介2.1 系统综合要求2.1.1 硬件要求:PC机:2台或者2台以上,RAM256MB以上,CPU400MHZ以上,硬盘40GB以上、耳麦各2副

14、局域网2.1.2 程序运行环境:系统开发平台:Microsoft Visual Strdio 2005Microsoft DirectX SDK (November 2008)系统开发语言:C#运行平台:Window2000,Windows Xp,Windows Server 2003运行环境:Microsoft .Net Freamwork 2.0分辨率:最佳效果 10247682.2 C# 简介C#(发音为C Sharp)是由微软公司所开发的一种面向对象,且运行于.NET Framework之上的高级程序设计语言。C#的设计目的是简化网络应用。使用C#语言能够迅速地架构基于Windows和

15、Internet的应用程序和组件,如标准的Windows应用程序和控制台应用程序,编译后生成的文件扩展名为EXE;程序库应用程序,编译后生成的文件扩展名为DLL,主要用来共享程序代码。2.3 MicroSoft .NET Framework 简介.NET Framework 是由微软开发,一个致力于敏捷软件开发(Agile software development)、快速应用开发(Rapid application development)、平台无关性和网络透明化的软件开发平台。.NET是微软为下一个十年对服务器和桌上型软件工程迈出的第一步。NET 包含许多有助于Internet和Intran

16、et应用迅捷开发的技术。.NET 也为编程界面(API)提供了新功能和开发工具。这些革新使得程序设计员可以同时进行Windows应用软件和网络应用软件以及元件和服务(web service)的开发。.NET 提供了一个新的反射性的且面向对象程序设计编程界面。.NET 设计得足够通用化从而使许多不同高级语言都得以被汇集。2.4 Microsoft DirectX SDK 简介SDK 是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做 “SDK”。具体到我们

17、这个系列教程,我们后面只讨论广义 SDK 的一个子集即开发 Windows 平台下的应用程序所使用的 SDK。SDK提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的“工具包”。由于SDK 包含了使用 API的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK 编程”。而 API 和 SDK 是开发 Windows 应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如 VCL 和 MFC,虽然他们比起“SDK 编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API 函数。2.5 .NET 与

18、多线程技术多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。在本质上和结构来说,.NET是一个多线程的环境。有两种主要的多线程方法是.NET所提倡的:使用ThreadStart来开始你自己的进程,直接的 (使用ThreadPool.QueueUserWorkItem)或者间接的(比如Stream.BeginRead,或者调用 BeginInvoke)使用ThreadPool类。线程的基类是System.Threading。所有线程通过CLI来进行管理。2.6 C/S结构与WINDOWS SOCKETS网络编程通常的通信工具,都采

19、用客户机/服务器(C/S)体系结构,C/S结构是这样的一种结构:它包括一个客户机(或前端),一个服务器(或称后端),客户机的作用是访问和处理远程服务器上的数据,服务器的作用是接收和处理客户机的数据请求。有时,可能有多个客户向同一个服务器同时请求服务,这就需要服务器决定怎样处理这些请求。Client/Server结构是当前数据库应用程序中极为流行的一种方式。尤其是网络技术的发展,使得当前很多系统都采用这种方式进行构造,其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信

20、息。Client/Server模型最终可归结为一种“请求/应答”关系。一个请求总是首先被客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。在客户发出一个请求之前,服务进程一直处于休眠状态。一个客户提出请求后,服务进程被“唤醒”并且为客户提供服务,对客户的请求做出所需要的应答,如图2-1所示。图2-1 客户机服务器通信结构示图为了方便Client/Server模型的网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口

21、。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。在IP连接领域有两种通信类型:面向连接的(Connection-oriented ) 和无连接的(Connectionless)。在面向连接的套接字中,使用TCP协议来建立两个IP地址端点之间的会话。一旦建立了这种连接,就可以在设备之间可靠地传输数据。为了建立面向连接的套接字,服务器端和客户端必须分别进行编程。在System.Net.Sockets 名空间下,有两个专门用于TCP协议编程的类:TcpClient类和TcpListener类。这两个类提供了直观的易于使用

22、的属性和方法,从而降低了TCP协议编程的难度。一般情况下,使用TcpClient连接、发送和接收数据,使用TcpListener监听是否有传入的连接请求,使用Close()方法释放与TcpClient关联的所有资源。C/S 模式下Windows socket编程示意图,如图2-2所示。图2-2 C/S 模式下socket编程具体到这个项目,服务器只是用来验证用户的登录,以及广播用户的登录状态等。具体的通信,采用P2P模式,每两个客户端要进行连接通信时都直接连通而不用通过服务器来进行信息的中转,这样设计的优点是既可以对用户进行管理,又不会造成服务器的通信负担。所以,系统结构将设计成如图2-3的方

23、式。图2-3 客户机直接通信结构示图2.7 XML简介XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。 XML与Access,Oracle和SQL Server

24、等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。 XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。XML的主要作用有:(1)丰富文

25、件(Rich Documents)- 自定文件描述并使其更丰富 (2)属于文件为主的XML技术应用 (3)标记是用来定义一块数据应该如何呈现 (4)解释数据(Metadata)- 描述其它文件或在线信息 (5)属于数据为主的XML技术应用 (6)标记是用来说明一块资料的意义 (7)组态档案(Configuration Files)- 描述软件的组态参数第3章 需求分析3.1 用户需求随着中小型企事业的不断发展,在企业内部实现局域网通信是必不可少的。局域聊工具就是一个非常好的局域网通信软件,它可以在职工不移动位置的情况下进行在线聊天、文件传递、语音聊天。这样,可以大大提高企业的工作效率,便于企业

26、内部职员的交流。根据用户对聊天工具的要求,可分为以下几点:1、 操作简单方便、界面简洁美观。2、 客户端能够注册新用户3、 可以在局域网实现文字和文件的传输4、 可以进行聊天记录保存5、 可以实现局域网语音聊天6、 系统运行稳定、安全可靠3.2 系统功能需求这个程序要实现的功能如下:(1) 程序启动之后就能看到当前哪些机器在线,哪些可以与之进行对等通信。(2) 一旦有某个网内的机器上线了,要有即时通知,并能及时更新用户界面中的用户列表。(3)当双击某个列表项的时候,要弹出聊天对话框,可以在其中编辑要发送的聊天信息,并进行发送。(4)聊天界面要人性化,下面是发送框,上面有已有聊天记录,并借助滚动

27、条看到当次所有的聊天记录。(5) 当有远程用户向本机发送文件的时候,要弹出一个消息提示框,提示本机用户,可以选择接收或者拒绝。(6) 当用户觉得有必要保存聊天记录时,提供一个简单的聊天记录保存功能。(7) 文件传输过程中,应该有当前传输状态提示,并能够对传输耗时等进行计算,作为当前网络状态的一种反馈。3.3 性能要求首先要求程序要完全可靠,可以应付各种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退

28、出程序,避免发生程序假死现象。开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的耦合,以免维护困难。3.4 测试环境规定在开发过程中由开发人员自己,也就是我和搭档莫景顺随时进行内部部分白盒测试,在开发完成以后,自己进行一个全面的白盒测试,然后请同学帮忙进行黑盒测试。3.5 可行性研究(1

29、)成本可行性分析本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。(2)技术可行性分析开发所需要的软硬件平台已经搭建好,并进行了合理而完善的需求分析,做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与C#开发环境的严密契合能力,加之相类似的更大规模的INTERNET通信工具产品也已有例在先,所以这个程序的开发在技术上是完全可行的。第4章 系统设计4.1 系统目标根据用户对聊天系统的要求,本聊天软件可以实现以下目标:(1)用户管理(2)登录(3)当有用户登录时会在客户端在线用户中添加显示出来(4)当有

30、用户下线时会从客户端在线用户中删除其信息(5)实现客户端间的文本聊天(6)实现客户端间的语音聊天(7)实现客户端间的文件传输(8)实现聊天记录的保存4.2 系统功能结构本系统中主要包括两个部分:服务器端和客户端。服务器端的功能包括:验证客户注册、添加新用户、验证客户登录、广播登录用户信息、广播下线用户信息。客户端的功能包括:注册新用户、用户登录、文本聊天、语音聊天、文件传输。客户端功能结构如图4-1所示。局域网聊天工具客户端用户验证文件传输文字聊天语音聊天连接用户注册用户登录发送文件接收文件接收消息消息记录发送消息语音传输语音播放语音采集发起连接接受连接图4-1 客户端功能结构4.3 业务流程

31、图局域网聊天系统的业务流程图如图4-2所示。客户端已注册?登录登录验证主窗体对话框窗体服务器端服务器(记录所有注册用户和显示所有当前在线用户)注册发消息发消息NYY服务器(记录所有注册用户和显示所有当前在线用户)N客户端主窗体发消息对话框窗体发消息TCP/UDP协议图4-2 系统业务流程图4.4 系统模块划分由图4-1我们可以看出系统主要分为服务器端和客户端两大部分,经过商讨,我们决定把系统分为六个模块:服务器模块、客户端模块、语音聊天模块、文本聊天模块、文件传输模块、用户管理模块。此系统由2个成员共同完成,各成员分工情况如表4-1所示。 表4-1小组成员分工情况表学号成员姓名负责模块xxxx

32、xxxxx服务器模块、客户端模块、语音聊天模块*文本聊天模块、文件传输模块、用户管理模块第5章 系统模块详细设计在本次开发过程中,我主要负责文本聊天、文件传输和用户管理模块的设计和实现,现详细地介绍这三个模块的实现。5.1 文本聊天模块实现5.1.1 文本聊天模块概述凡是聊天工具,都少不了文本聊天功能,这是个基础功能。通过文本聊天,局域网内用户能够发送和接收文字信息,并在程序窗体上显示出来,相互之间进行在线交流,并能根据用户需要,对聊天记录进行简单的保存。文本聊天的信息传输协议主要有面向连接的TCP和无连接的UDP。TCP协议是互联网中最重的协议之一,主要特点是:保证数据包的准确到达;保证各数

33、据包到达的顺序和数据包发出的顺序相同。UDP协议提供了快速但不一定可靠的传输服务,UDP协议采用无连接的套接字,不需要在网络设备之间发送连接信息,和TCP相比,UDP缺乏双方的握手信号,因此不保证数据包一定到达目的地,可靠性不如TCP,而且,由于UDP没有任何对双方会话的支持,不能保证各数据包到达的顺序与数据包发出的顺序相同。所以,在文本聊天模块中,采用TCP协议来传输文本信息。5.1.2 文本聊天服务器工作原理开启服务器,文本聊天窗体加载成功后,将启动监听线程,服务器主要是负责监听局域网内的用户的连接请求。收到客户发起的连接请求后,若服务器处于空闲状态,弹出消息提示框,对请求进行处理,服务器

34、可以选择接受或者拒绝客户端的连接。若同意连接,则返回给客户端同意信号,开启服务器的接收信息线程,并置消息发送事件为Enable。客户端收到服务器返回的同意信号后,也开启接收信息线程,并置消息发送事件为Enable。通信双方就可以进行文字聊天了。若服务器端拒绝客户端的连接,则关闭tcpconnect,并关闭网络流,继续执行监听。客户端得知服务器端关闭tcpconnect并关闭网络流之后,则释放本次socket和网络流。若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,不影响到下一次连接的接入。文本聊天服务器工作流程如图5-1所示。开启监听线程,监听端口否是开始同意

35、连接请求?发送拒绝信号建立连接,允许发送消息事件,启动接受信息线程进行文字消息通信是否是否断开连接?发送断开信号,关闭文本聊天是终止否保存记录?保存聊天记录图5-1文本聊天服务器程序流程图5.1.3 文本聊天客户端工作原理客户端用来向服务器端发起一个连接,等待服务器的允许接入确认。若服务器端同意连接请求,接收到服务器的同意连接信号后,开启接收信息线程,并置消息发送事件为Enable,通信双方就可以进行文本聊天了。若服务器端拒绝连接,则释放Socket连接并关闭网络流。若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,不影响到下一次连接的发起。文本聊天客户端工作流

36、程图如图5-2所示。连接服务器服务器同意连接?否是建立连接,允许发送消息事件,启动接受信息线程进行文字消息通信开始是是否断开连接?发送断开信号,关闭文本聊天否终止保存聊天记录保存记录?是否图5-2 文本聊天客户端程序流程图5.1.4 P2P文本聊天1) 功能概述将文本聊天客户端和服务器模块,通过多线程技术,集成在一个聊天窗体里面,窗体加载时进行监听,有连接请求到达,则为服务器端;试图连接远程用户,则为客户端。它是建立在TcpListener以及TcpClient这两个类基础上的。程序实现的原理也比较简单,但是用到了P2P技术非中心化的基本原则。简言之,用这个程序可以在网络中发送、接受消息,任何

37、一台计算机既可以作为服务器端,又可以作为客户端。2) 集成文本聊天工作流程图集成主窗体创建后,加载监听线程。当有接入连接请求,同意或拒绝接入请求,若同意,则按照文本聊天服务器模块工作流程执行。当无接入请求,则判断是否有尝试连接远程服务端事件,若有,则按照文本聊天客户端模块工作流程执行,如图5-3所示。执行监听线程,监听端口是否开始有接入连接请求是是否否连接服务器?是否是否断开连接?连接双方进行消息通信是终止保存聊天记录否保存记录?发送断开信号,关闭文本聊天是本地或远程服务端允许?建立连接,允许发送消息事件,启动接受信息线程图5-3 P2P文本聊天程序流程图3) 集成主窗体设计主窗体是用来与用户

38、交互用的,所以加载时间不能太长,响应速度应足够快,操作简单,设计人性化。所以,设计的时候,采用了一些通俗易懂的图片和按钮。文本输入框设计了Alt+S和Ctrl+Enter热键功能,方便用户快速的发送消息。当用户未输入文字而尝试发送时,弹出消息提示框,提示不能发送空信息,节省系统和网络资源。主窗体界面如图5-4所示。图5-4 集成主窗体界面文本聊天窗体主要控件属性,见表5-1。表5-1 文本聊天窗体主要控件属性表控件属性值GroupBoxNamegroupbox1Text信息显示RichTextBoxNamerichTxtInfosReadonlyTRUERichTextBoxNamerichT

39、xtSentReadonlyFALSEActiveKeyDownButtonNamesendText发送消息ButtonNameclearboxText清除屏幕ButtonNamesavelogText消息记录4) 具体实现1、定义相关变量。2、集成主窗体创建后,创建一个tcpListener的对象,端口为5000,IP为任意。创建监听线程wait,wait线程执行的是waitconn()方法,启动监听线程。调用getMyIP()方法用于获取本地IP地址,并在连接建立时传给对方。当wait线程监听到远程用户的接入连接请求,弹出消息提示框,用户可以选择同意或拒绝接入请求。若同意,则创建接收信息线

40、程th,并启动th。若用户拒绝远程接入请求,则关闭网络流nss,关闭tcps,并调用disconnect()重新初始化相关变量。3、接收信息时,尝试读取网络流,采用的是Unicode编码。读取到的消息如果不为断开连接信号,则在聊天记录框里面显示出来;若为断开信号,则执行disconnect()方法关闭当前连接。4、当无接入请求,则判断用户是否有尝试连接远程服务端事件。若有,创建TcpClient的对象tcpc,并尝试连接远程主机。5、连接建立后,用户单击“发送消息”按钮或者在输入文本框内按热键“Alt+S”或“Ctrl+Enter”,触发send_Click 事件。send_Click事件主要

41、是将用户的输入通过Socket,采用网络流的形式传输给远程用户,编码采用Unicode,同时在聊天记录框里面显示出来。6、断开连接或关闭窗体,需要将Socket、网络流以及接收信息线程th进行关闭,重置各按钮的可用状态。若是关闭窗体,还需将wait线程关闭。5.2 文件传输模块实现5.2.1 文件传输模块概述除了文本聊天以外,局域网内另外一个应用是文件的共享。通过文件共享,企业能提高信息交换的速度,从而提高工作效率。文件共享的实现离不开文件传输。由于TCP协议能保证数据包的准确到达以及各数据包到达的顺序和数据包发出的顺序相同,出于可靠性和效率考虑,本模块也采用TCP协议来进行用户之间文件的传输

42、。5.2.2 文件传输接收端工作原理开启窗体后,接收端执行监听线程。当接收到客户发起的文件传入请求后,弹出消息提示对话框,提示用户对请求进行处理,同意或者拒绝接收。若同意接收,则弹出文件保存对话框,用户选择文件保存路径并确认后,发送接收信号给文件发送端,启动计时器开始接收文件流,将远程文件保存在本地,并在文件传输过程中对文件传输状态进行反馈,文件接收完毕后,关闭计时器,关闭文件流,并在状态栏上显示出完毕状态。若拒绝接收,则向发送端返回拒绝信号,继续执行监听线程,等待下一次的文件传入请求。文件传输接收端工作流程图如图5-5所示。执行监听线程同意接收文件?否是发送同意接收信号,启动计时器,接收文件

43、流,反馈状态终止接收发送端的文件传入请求关闭计时器,关闭文件流将远程文件存储至本地文件开始发送拒绝信号图5-5 文件传输接收端程序流程图5.2.3 文件传输发送端工作原理开启窗体后,发送端选择用户需要发送的文件,向接收端发起的文件传输请求,若接收端端同意接收,开启计时器,将本地文件通过网络发送给接收端,并在文件传输过程中对文件传输状态进行反馈,文件发送完毕,关闭计时器,关闭文件流,并在状态栏上显示出完毕状态。若接收端拒绝接受文件,则取消本次文件发送,等待用户的下一次文件发送事件。文件传输发送端工作流程图如图5-6所示。添加待传送的文件接收端同意接收文件?否是启动计时器,发送文件流,反馈状态终止

44、向接收端发送文件传输请求关闭计时器,关闭文件流将本地文件发送至接收端开始图5-6 文件传输发送端程序流程图5.2.4 P2P文件传输1) 功能概述将文件发送端和接收端模块,通过多线程技术,集成在聊天窗体里面,窗体加载时进行监听,有文件传输请求到达,则为接收端,执行接收端工作流程;若试图发送文件到远程用户,则为发送端,执行发送端工作流程。这样就实现了P2P模式对等传输。2) P2P文件传输工作流程图负责接收文件的监听线程集成在聊天窗体内,当聊天窗体加载时,将开启此线程。当有文件传入请求,用户可以同意或者拒绝接收,若同意接收,则按照文件传输接收端模块工作流程执行。若在聊天窗体生存周期内,无接入连接

45、请求,则判断是否有用户尝试发送文件事件,若有,则按照文件传输发送端模块工作流程执行。P2P文件传输工作流程图如图5-7所示。否执行监听线程,监听端口是否启动计时器,接收文件流,显示文件接收状态信息终止保存文件开始是是否接收端允许?启动计时器,发送文件流,显示文件发送状态信息将本地文件发送至接收端发送文件?否是有文件传入请求允许接收?图5-7 P2P文件传输程序流程图3) 文件传输发送端窗体文件发送主要作用是发送本地文件至远程接收端,所以功能尽可能简单化,方便用户操作,设计人性化。设计的时候,采用了一些简单按钮,布局也和常用的窗体类似。为方便用户快速的选取发送文件,所以文件路径选择框支持拖拽功能。当用户未选取文件前,开始按钮不可用,当用户输入的文件不存在时,弹出消息提示框,提示文件不存在错误。文件接收功能集成在聊天窗体内,文件发送窗体界面如图5-8所示。图5-8 文件发送窗体界面文件传输窗体主要控件属性见表5-2。表5-2 文件传输窗体主要控件属性控件属性值TextBoxNametxtFileButtonNamebtnBrowseText浏览.ButtonNamebtnStartText开始ButtonNamebtnCancelText取消LabelNamelblStatusOpenFil

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号