毕业论文-C#聊天系统.docx_第1页
毕业论文-C#聊天系统.docx_第2页
毕业论文-C#聊天系统.docx_第3页
毕业论文-C#聊天系统.docx_第4页
毕业论文-C#聊天系统.docx_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江西理工大学应用科学学院毕业设计C#聊天系统摘 要目前随着时代进步与发展,我们的生活中除电视、报纸、广播之外的第四大媒体,互联网不仅可以在人们无聊的时候成为一种打发时间,而且还可以变成人们获取新闻消息的主要渠道。各种各样的基于网络聊天应用软件随着互联网技术的发展而出现,网络聊天系统就是其中一个。此程序采用Visual Studio 2010开发环境和c#编程语言以及c/s结构开发了一个类似QQ的网络聊天工具,并在WINDOWS平台上加以了实现。主要功能有文字聊天、文件传送。通过C#编程语言进行网络编程,实现了人性化的界面设计与功能设计。软件经过测试,程序运行稳定、可靠、具有一定的使用价值。构成了一个实用的、功能完善的聊天软件。它满足了现代人们即时通信的需求,达到预期的设计效果,对网络聊天工具的人性化设计具有一定的现实意义,同时也为其他相关项目的设计提供了参考。关键词:网络聊天工具;C#; 即时通信;人性化AbstractWith theera of progress and development,in addition totelevision,newspapers,radio and the fourth mediain our life,the Internetcan not only becomeatimewhen people areboring,but also canbecomethe main channelfor people to obtaininformation.A variety ofapplication softwaredevelopment with the emergence ofnetworkchatbased on the Internet technology,the network chat systemis one of them.This program usesVisualStudio 2010development environment and c#programming language and the c/sstructure of the development ofa similar QQchat tools,and implementedon the WINDOWS platform.The main function ofthe text chat,file transfer.Network programming,through the C#programming language,realized thefunction ofinterfacedesign andhumanized design.The softwaretesting,program operation is stable,reliable,has certain usevalue.Constitute apractical,perfect functionchat software.It can meet thedemand of modern peopleinstant communication,achieve theexpected effect of the design,has a certain practical significanceon thehumanized design ofnetworkchat tool,but also provides a referencefor other related projects.Key words: online chat tool; C#; instantaneous communication ; database humanization目 录第一章 绪论11.1 C#聊天系统开发背景11.2国内外的发展现状21.3本课题研究的意义21.4聊天工具开发的现实意义31.5本文的主要工作3第二章 开发环境及开发工具52.1 C#聊天系统开发环境介绍52.2 C#编程语言简介62.3 C# 语言特点72.4 C/S结构82.5系统综合要求92.5.1硬件要求:92.5.2程序运行环境:9第三章 系统需求分析103.1 用户需求103.2 可行性研究103.3 性能需求103.4系统功能需求11第四章 软件的设计方案124.1 系统功能结构124.2系统目标124.3业务流程图134.4 文本聊天模块实现134.4.1 文本聊天模块概述134.4.2 文本聊天服务器工作原理144.4.3 文本聊天客户端工作原理154.4.4 P2P文本聊天164.5 文件传输模块实现174.5.1 文件传输模块概述174.5.2 文件传输接收端工作原理174.5.3 文件传输发送端工作原理184.5.4 P2P文件传输18第五章 系统设计与测试215.1 服务器端的设计215.2 客户端的设计285.3系统测试32总结和展望33致谢34参考文献35II第一章 绪论1.1 C#聊天系统开发背景当今社会半随着越来越丰富多彩互联网应用软件的出现。聊天工具是互联网的一种,它以高速发展简单易变互交为特色的。如今许多网络用户最喜欢的网络交流手段是基于互联网。当代使用最多的即时性通信交流手段之一当然是聊天系统。它给互联网上的提供了非常多的服务为广大的用户。例如文字聊天和文件传输。群发消息和语音聊天。视频聊天等功能。其中及时通讯工具最具有上升潜力之一的聊天系统。广大的用户伴随着聊天软件的后期功能的完善,从而用户可以通过聊天软件在互联网上尽情的去交流。聊天软件具有的功能有文字聊天、文件传送,还可以用做语音和视频聊天。聊天软件的发展将不仅可以带动基础应用的更加方便,还可以将其扩伸到其他方面,将带来质的飞跃,具有划时代的意义。它将为了满足人们日常的需要,另其功能不断的完善和加强。我们今后将随着以前所未有的速度互联网技术的发展。通过聊天软件改变着人们的生活方式。它将会变成不能少有的一部分在人们在网络生活中。计算机网络与通信,被称为“信息基础设施”和互联网的时代,伴随着网络的迅速发展,它将成为人与人之间相互交流的联系的极佳的方便的工具。所以讲我们的生活中已经离不开网络了。 在我们的现实生活里我们可以通过许多聊天工具去和家人朋友们联系,例如手机,电脑等等。但是对于这些工具都有各自的缺陷。要么实用性不高,或者成本太高了,要么一次只能和一个人交谈。在这种情况下我们现实生活中就需要一种成本不高实惠的,方便,实用的能和多个人聊天的聊天系统,这是我们做的这种聊天系统即将弥补这个空百,他给带来了极大的方便在我们现实生活中。现在我们互联网已经遍及家家户户了,很多“网虫”对于在互联网上聊天已经成为习以为常了。互联网上多点通信程序可以说是最方便聊天室程序了。来自程序员的看法就是在I/O端点之间去实现我们多不多的通信是一种简单聊天室程序。即时通信工具的广域网络。今天的发展,常用的TCP或UDP系统实现技术的成熟,这些软件,从每个功能,在实践中也有自己的优势,但这些产品都是基于商业运作,来实现商业秘密,不在意的细节的分析,但大的方面无可厚非是使用多种网络通信端口。但是通信网络的是通过TCP / IP协议构建的软件产品基于各种平台。网络的迅速发展,对网络的发展议程的实施中的地位越来越重要,而网络应用和应用的传统思维的发展和实现发展计划的区别很大,随着系统网络数据库技术的发展和管理,最受欢迎的每一次的C/S架构的发展计划。由于该结构方案的实施可以完全从系统的优势和网络数据库的效益,满足着使用要求在人们的日常生活聊天中。1.2国内外的发展现状ICQ在全世界发布在1996年11月。打开了互联网IM(InstantMessenger)即时通讯应用的序幕。在短短数年里就对于这样的看似很小软件发展成为一个庞大的IM产业。及时性聊天软件很早就已经成为最火热的网络的应用软件之一直到现在的社会。在国内国外的互联网聊天软件有许多。经历若干年的发展让ICQ是第一款及时性的聊天系统在全球上行业内的地位已经是无可撼动了。ICQ是“我找你”的意思。它的谐音又是“I SEE YOU”。在六个月的时间注册的用户已经高速达到了九十万从它推出的时候开始。它的用户数量翻了近十倍将近一千二百万人在1998年,备受人们喜爱。互联网领导者Yahoo和在桌面软件领域独步天下的微软分别受ICQ的迅速的发展的影响而推出MSNMessenger 、YahooMessenger和昙花一现的MSChat等软件的出现。代顿是通信市场的原型,互联网巨头和世界上最大的软件公司在大屏幕上,即时通讯的时代,在这样的背景下开始慢慢地诞生。当ICQ流行在世界各地时候,任何中国模仿的IM软件慢慢出现了。今天,占据国内市场主要是腾讯公司的QQ,雅虎的雅虎通,微软的MSN、等等。其中腾讯公司的QQ业务占了中国的市场份额70%以上。半随着IM应用的功能,并立即开始的文本的功能早就超过最开始的预料。表情符号已成为每个软件标准的即时消息,文件传输和聊天和游戏和视频和语音以及先进的互联网也越来越集成在即时通信中的应用。事实上表示,现在已经不再是简单的一个的IM,但沟通的工具,信息,互动,娱乐,IM平台的中心的声音,视频和音乐的需求,信息共享,和新的应用出现了现在的软件越来越成熟,发展的IM到现在,IM的行业链形成。已经成为现代经济的重要组成部分,我认为,道路将更加广阔和美好的IM软件。1.3本课题研究的意义在21世纪的时候也就是信息时代的时候,信息在传播的一面有了赞新的变化伴随着互联网技术的发展。当代聊天软件不仅可以让广大的用户进行文字聊天、而且还增加了视频聊天和语音聊天,所以说它成为了作为最为广泛的聊天应用工具。它具有及时性通信的特征,所以说它可以让用户第一时间得到交流的自己想要的信息。它让我们彼此之间更加深入的相互了解只有我们可以面对面的在网上交流说话。聊天软件获得广大人们的喜爱因为它用过了人性化的设计让每个用户都很容易的去上手。连接每一个网上的用户是通过聊天软件的出现,而连接着全世界是通过Internet的出现。它随着这几年的快速发展已经成为具备一个信息管理和休闲娱乐及交流互相三者合一的多功能的互联网应用即时通过交流互联网通讯工具。聊天软件随着网洛应用的高速发展已经告诉的变成了最为火热的网上聊天软件之一。聊天软件让人们在互联网上的生活更加的丰富多彩,它将随着聊天软件的出现才能出现这样的结果,目的带来交流上的方便。总之他给我们的生活建立了深刻的感情。1.4聊天工具开发的现实意义聊天工具在局域网中一般都具有文件传送和文本聊天功能。它是用户之间用来作为交流使用的工具在局域网内部中。它是许多著名的企业单位内部局域网使用最多的软件之一,因为它开发成本低,系统资源消耗少,使用简单没方便易懂。使用它的越来越多。当今IPMSG(飞鸽传书)在许多局域网聊天工具中站稳了脚步。IPMSG在一些时候不能够通信交流,但却可以看见彼此的,它在同一vlan情况下。因为它传输不稳定在采用了udp协议作为消息传播协议的条件下。但是IPMSG是能够做到在局域网中消息以及文件的传播。但在有些情况下不能实现相互通信但能看到对方用户在线,这个时候我们该怎么办呢?那么我们的解决方法就是曹勇tcp协议,开发出相应的能够实现彼此连接的双方交流通信传递的网络应用程序。它具有的事面向连接的传输层协议作为消息传递协议。未来的电信业务将随着互联网的不断发展与进步将呈现多句话的格局。同样作为话音业务,此时“互联网成为了通信交流系统的主要交流工具”的声音将会很红火。它将可能是有线电视网络提供的,也有可能是PSTN网络提供的,也许是internet网络提供的,甚至可能是煤气管道、电力网提供的。这所有的一切都是以IP为基础的通信网络将用户的选择包括电脑与电话、电话和电话以及电脑与电脑和电脑与手机等通话种类。但非是传统的通信模式的电信服务。所以VOIP将是一个发展方向在聊天工具里。如今所出现的局域网聊天软件中大多数都不具备语音视频聊天功能。我此软件的开发模块将可能具有聊天模块以及文件传送功能。通过开发此软件可以给用户提供文件传送功能,从而提高了用户之间的信息传递效率和通信交流的稳定性。在这个开发的过程中,我们将会学到很多知识,练习socket的编程,锻炼了我们编程的能力,所以在此过程中价值是不可估量的。1.5本文的主要工作聊天软件成为最为主流的互联网应用软件,因为具有文字聊天、文件传送等基本的功能。伴随着慢慢的改进它将成为使用最为广泛的及时性的通讯交流工具。因此在本论文中我们主要对聊天软件的文字聊天、文件传输功能进行封信与研究,目的去改进完善它。这样我们就可以去总结相应的理论知识。此论文首先阐述了相类似的技术和基本专业知识,随后介绍本软件的主要代码,然后分析介绍各功能以及系统测试其稳定性实用性。首先结合国内国外的聊天软件的发展情况来论述聊天软件对任命的生活中影响在哪些方面,从而我们谈谈聊天软件对社会有何意义。然后对此聊天软件进行较为项次的系统分析。从而也对开发环境和开发工具进行说明。最终成功完成具备所要求的文字聊天和文件传送功能的聊天软件的设计方案。在本次多功能的聊天软件开发与设计中,任务要求是开发文字聊天模块以及文件传送模块的设计与开发以及较为详细的分心与说明。35第二章 开发环境及开发工具2.1 C#聊天系统开发环境介绍Visual Studio是目前微软windows平台推出的最为流行的应用软件程序开发环境。目前最高的版本是Visual Studio 2014了。Visual Studio可以去创建网络服务和办公插件以及智能设备应用程序。它也可以去建立在windows平台下的windows应用软件和网络应用软件。微软公司将所有的开发语言的开发环境版本升到6.0在1998年发布了Visual Studio 6.0的时候。 Microsoft Basic 完善与改进转化为新的一种面向对象的语言:Microsoft Basic.NET,这是寄6.0的下一个版本7.0,这也是Visual Basic 最后一次发布。微软公司在后来的Visual Studio中不在具备面向Java虚拟机的开发环境是由于sun公司因为Java 语言扩充导致与 Java 虚拟机不兼容把微软公司搞上了法庭。微软公司发布了Visual Studio .NET(内部版本号为 7.0)是在2002年.NET 框架的提出结合 Windows XP 的发布的条件下出现的。这个时候微软公司作为一个单独的开发环境以 Visual FoxPro 7.0 单独销售,与此同时取消了 Visual InterDev,这些都是在剥离了 Visual FoxPro的条件下。在同个时期微软公司在.NET 框架基础上托管代码机制和一门新的语言c#。它又称为c sharp,意为c+。C#是编写.net框架的语言。它是一门在现代语言是建立在C+ 和 Java 基础上。所有的.net的通用语言框架机制支持的代码都将会被定义为称为clr可执行的机器代码去执行,它的目的在于同一个项目文件支持多种语言所开发的组件。此时Visual Basic、Visual C+转身成为支持托管代码机制的开发环境。Visual Basic .NET也就可以支持面向对象的编程机制了。Visual J+也就变成Visual J#(Visual J+)。后者的面向不是Java 虚拟机,反而是.NET Framework,但语法与Java 相同在2003年的时候微软公司对 Visual Studio 2002进行了一部分的改动,从而发布了命名为Visual Studio 2003的开发环境。在2005年的时候微软公司发布了Visual Studio 2005。它在同样的情况下能同时开发多种应用程序,例如微软公司开发的操作系统的手机程序。在同样的情况下说是一个非常庞大的多功能软件包括了代码测试功能。渐渐的.net字眼小时在各种语言里。且这个版本的 Visual Studio 仍然还是面向 .NET 框架的,没有什么改动。这个版本的 Visual Studio提供了免费的Visual Studio Express 版本,气质包括很多版本,其中都面向不同的开发角色。同时Visual Studio 9基于微软工具流的变成模型以及完善数据的支持。Visual Studio 9 将名称改为 Visual Studio 2008是为了与Office系列保持一致。目前这种软件是基于异步的客户端动态网页技术,它是建于立DHTML 基础上的 AJax 技术,但是没有像当年微软预期的那么流行了。在2008年的时候微软公司同时发布Visual Studio 2008将和WindowsServer 2008。使用Visual Studio 2005开发且调试多种类的服务器应用程序。使用改进后的可视化工具可以享受高效率的开发环境。各种版本都在标准版的基础上进行的改动与完善,其中有远程服务程序的开发及调试,以及完整的。没有限制的开发环境。.NET Framework 4.0是一种多功能的、稳定性高的开发环境,而且还支持扩展Visual Studio开发环境的工具,所以说它是专业人员用的最多的了。2.2 C#编程语言简介C#(读作C Sharp) 是一种优雅的、简单的、稳定的、安全的,是由C和C+发展出来的一种面向对象的编程语言。且C#是一种运行于.NET Framework之上的以及面向对象的高级程序设计语言。C#包括了许多单一的集成,窗口。它与java语法相类似,并且编译中间代码到运行的过程也差不多,所以说它看起来和java有着惊人的相似。C#以其优雅的语法风格、创新的语言特征、强大的操作能力以及便捷的面向条件的支持.net开发首选语言。它综合了vb的可视化简便的操作和c+的高效率的运行,从而继承c和c+强大的多功能的特性同时抹去了血多复杂繁琐的步骤。但是c#和java也有着许多明显的不同之处,它与COM(组件对象模型)是直接集成的。相对c#是微软公司.NET windows网络框架的重中之重。其实c#最吸引人的不是相似之处,而是它们彼此的不同之处。(1)中间代码微软很小心的去命名msil目的编译成机器码,而不是解释性的。程序员在大多数情况下业余明白了很多,认为c语言编写任何多东西必定会比java编写程序快很多。这个时候微软在用户选择方面对于msil编写成机器码的时候留了很大的空地。当然在此刻我们还需要去证明这个事实,由于c#生成的msil的编译器和c# 还都没有发布。实现这种方式的决定性取决于msil的程序。解释性的java代码在其性能上是不如C#。C#是编译语言而java是解释性的,他们是java jit编译器的存在的普及性是的java和C#在性能方面是相同的。他们这样的声明也只是跟商业有关。由于Java的中间代码和MSIL都是中间的。因此在运行的时候他们被称为编译成机器代码。(2)命名空间中的申明当你建立了一个程序的时候,你在命名空间中(在类的外面)还是有可能声明端口。同在一个命名空中建立一个或者多个类。例如在枚举类型和结构体中。程序开始必须要用到using这个关键词作为引用其它命名空间的内容。(3)基本的数据类型c、c+以及java所有的优点以及多种数据类型,我们用到C#变成都具有。其中这些类型有bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal。C#各个数据类型都具有无符号、有符号两种类型,在这一点上类似于C及C+。也像java程序一样,这些类型都有一个固定不变的容量。c#有一种新的数据类型是decimal数据类型。(4)两个基本类作为编程语言中的一部分存在可能使用它将意味着编译器会创建一个string对象目的用来保护它。无论什么时候你在编写程序时写入一句带有引号的字符串其中一个是命名为object的类是表示所有其它类的基类。另一个是命名为string的类和object相类似的程序语言一部分。(5)参数传递Ref关键字可以使得一个变量接受另一个返回值。它可以用来去强迫使一个变量引用传送。数据类型进行值传送石缺省是一种最为基础的参数传递方式。被声明可接受可变的数目的参数是一种方法对于out关键词声明引用传递的过程。它表明了这个参数并不需要初始值,在这个方面与ref有不同之处。(6)与COM的集成C#编写的类可以作为子类化,目的去存放com组件。C#生成的类也能作为一个com组件去使用,例如用JScript语言中的子类化可以得到第三个com组件。前者出现的结果将导致一个开放运行环境的产生可用的所有.net语言的子类化。它在这种状况下的巨剑称为网络服务。C#对于微软公司在windows程序最大的卖点应该是c#与com的完美的集成,与此同时com组件是微软的win32组件技术。(7)代理和反馈一个反馈的方法是代理的特例,其中event关键词将用在被当成代理调用的声明方法当在是件发生的情况下。仅仅当把它作为一个聪明的指针方法就可以了,访问一个特定的对象所指特定方法所得到的信息是一个代理对象所具有的。当代理对象可以被移动至另一个地址时,就可以进行类型安全调用是通过访问它来对已存在的方法来实现的。2.3 C# 语言特点C#编程语言给程序员们带来的帮助是巨大的,对于开发程序效率明显的提升。它继承了C和C+的优点,并没有以牺牲C和C+程序员的所关心的功能为代价。你要是有C和C+语言基础,慢慢你会觉得它也是那样的熟悉,很容易上手的。即便你觉得你是新手,感觉学习程序语言很难,但是C#将给你带来一个全新的认识,不会让你感觉到麻烦,它那简洁的语言会使你快速的成为一名熟练的程序员。可知C#是专门为.NET框架而开发出的语言。可以让C#与.NET框架结合的天衣无缝。在.NET平台下,各种优点都会在C#表现出来。你会深深的发现“#”-“SHARP”的真正含义,下面简单介绍一些C#的主要特点。(1)简洁的语法C#编程语言的代码在缺省的条件下可以在.NET平台下的环境能够流畅的运行。此时C#带来的最大特点是没有了指针。其中在在C+和C中被频率高的使用到操作符(例如:“:”、“-”和“.,”)将不会在出现,C#仅用到一个“.”。现况我们仅需要知道只和名字的嵌套相关联。C#用关键字代替活动模块库和混乱无秩序的为关键字。C+始终有语法冗长缺点问题,例如const和#define、等类似的字符。这里C#编程语言将对其简化了许多,仅保留着常见的形式,剩下的冗长繁琐的语法都被删除了。(2)精心地面向对象设计每种类型在C#系统中都可以作为一个对象。C#是通过拆箱和装箱原理来完成操作,这样就不会给程序员带来不必要的麻烦 ,大大的提高了效率。C#是通过一个类和单继承来摆脱打乱类型定义。在以后的学习中,你会慢慢发现C#无全局函数,无全局变量,无全局常数。全部都一定要封装与一个类中。这时你将发现你的代码大大的降低了冲突的可能性。来自VB中的经验可知,C#具备了不错的开发环境。自身具有的面向对象功能给程序员开发程序效率提高是不可估量的。对于软件公司来说,让他们在面对竞争能够减少压力。(3)完整的安全性与错误处理衡量一种语言的好坏标准是它的安全性和错误能力的处理。在日常程序开发过程中,即便是熟练的程序员也有可能会犯错误的,这些错误的后果是无法预知的。假如有问题的软件投入到市场使用,改正这些错误代价是无法预知的的。C#可以更加容易的消除开发过程中出现的错误,并提供一套完善的安全性,降低了开发过程中的错误。C#可以以更少的代码去得到相同功能的程序,大大的减轻程序员的工作压力,更加有效的摆脱错误的出现。(4)灵活性C#在优化语言的同时并没有放弃灵活性。在学习的过程你将会慢慢发现它是那样的灵活易懂。2.4 C/S结构我们大家都非常熟悉的客户端和服务器机构,即是人们常说的C/S (Client/Server)结构。它是通过它可以去充分的利用两端硬件的优势,可以降低系统的通信交流的容量,达到将任务合理去分配至C/S两端去实现。Web和C/S的应用都是可以同时进行同样的业务处理分析,由于当今的软件应用系统正在想应用发展通过分布式的web类别。如果我们合理分配任务就可以降低了成本,将应用各种的模块共同分享的逻辑组件。在内部和外部中的用户通过现有的应用逻辑系统从而扩展出新的应用的系统。这样就可以访问新的和现有的应用的软件。他也是目前应用软件的 发展指向标。C/S结构模型最终结果是可以归纳为一种“请求/应答”关系,其中一个请求总是在客户端先发出,随后服务器一直是处于被动的接受请求,回应给客户端所需要的结果。服务器一直保持着不工作状态在客户端发出一个请求之前。C/S结构是目前数据库应用程序中最为火热使用做多的一种方法。随着网络技术的发展是的目前许多系统都采用这种方法去进行开发,它最大的好处在于将其计算机工作任务分别合理的让客户端和服务器一起去解决。它的好处是能够充分有效的使用系统资源。所有客户机端都可以获取所需要的信息通过访问服务器,此外服务器也可以将收集信息于一起。当有一个客户端提出了请求后,服务器端“休眠”将被“唤醒”从而为客户端提供回应,对客户端的请求给出相应的回复。2.5系统综合要求2.5.1硬件要求:(1)PC机:2台或者2台以上;(2)内存RAM512MB以上;(3)CPU500MHZ以上;(4)硬盘140GB以上。2.5.2程序运行环境:(1)系统开发平台:MicrosoftVisualStrdio2010(2)系统开发语言:C#(3)运行平台:Windows2007,Window2000,WindowsXp第三章 系统需求分析3.1 用户需求网络聊天软件将随着互联网的发展和慢慢的普及渐渐的变成人们平时生活中不能否去烧一部分。我根据对社会的调查人们的需要可以去归类以下几点:(1)界面简单易懂、操作不难;(2)在局域网中可以实现文字聊天和文件传送;(3)具备了清晰的聊天窗口;(4)系统运行稳定、安全可靠。 3.2 可行性研究(1)成本可行性分析聊天软件开发只用来作为学习使用,实践巩固专业知识的,所以经济成本低,不考虑盈利。(2)技术可行性分析C sharp 开发环境与本程序的平台进行严密的巧妙的结合,利用开发所需要的软件和硬件平台目的去进行合理化的完善的细节需求分析。在本次由于本软件的平台基于windows,将要利用网络通信技术去解决windows接着去完善成熟通信网络端口。与之相类似是超大规模的internet通信工具成品,在此之前有先例是在这个程序基础上进行开发。这些在技术方面是完全可行的。3.3 性能需求程序必须具备良好的容错性,这样就可以增加程序可靠性。在系统本身出现问题时要可以由应付多种由系统问题引起的错误去解决。在做出相对应的解决措施在用户进行非法操作的时候出现问题。这时候对于出现多种类似的可能发生事件,向用户提交易懂简便的清楚地提示信息。比如网络失败时怎么办。可以避免发生程序假死现象。系统程序运行内存要尽可能的低,并且要求程序相应速度要尽量快些。我们还对程序进行改进,让它在运行的时候对系统硬件要求尽可能的低。开发程序要保证数据安全性,能够方便去维护与扩展,保证不会出现内存泄露类似的而引起的系统运行出现异常。在开发的过程中选取模块开发,这样各个模块不会出现重合,方便开发者维护更新。开发的文档具有清晰简便易懂等特点,这样就方便其他人接受接着更深入的开发。假如需要本人进行二次开发,这时就可以保证在以后对整个系统进行设计思路和细节更加的清晰明朗。3.4系统功能需求1开发的程序要具有以下功能:(1) 程序启动之后就能看到当前哪些用户在线,哪些可以与之进行对等通信。(2) 一旦有某个网内的机器上线了,要有即时通知,并能及时更新用户界面中的用户列表。 (3) 在双击随便一个port端口号时候,将出现相对应的对话框,就可以在此对话窗编写聊天信息发送。 (4) 在聊天窗口的设计要有人性化的设计,操作简单,下面是发送框,滚动时可以查看当时的聊天记录 (5)当有远程用户向本机发送文件的时候,要弹出一个消息提示框,以此提示本机用户,可以选择接收文件或者拒绝接收文件。 (6)文件传输过程中,应该有当前传输状态提示,作为当前网络状态的一种反馈。第四章 软件的设计方案4.1 系统功能结构本系统中主要包括两个部分: 服务器端模块和客户端模块。 服务器端模块的具备功能有:验证客户端IP地址、监听客户是否连接成功、接受客户端发来的的消息、接受客户端发来的文件,群发消息。客户端模块的功能包括:连接服务器、发送消息、文本聊天、文件传输。 客户端功能结构如图4-1所示。基于C#的网络聊天系统文件传送文本聊天消息记录接收消息发送消息接收文件发送文件记录时间图4-1 客户端模块功能结构4.2系统目标根据毕业设计对聊天系统功能的要求,本聊天软件具有以下功能:(1) 当有客户端提出连接请求时,服务器端显示连接请求和连接是否成功;(2)当有客户端退出连接时会从服务器会提示此客户端退出连接信息;(3)实现客户端的文本聊天;(4)实现客户端的群发消息;(5)实现客户端的文件传输4.3业务流程图局域网聊天系统的业务流程图如图4-2所示。客户端连接服务器?服务器(监听所有已连接用户和显示所有当前在线用户)主窗体服务器端 N发送消息文件 Y 图4-2系统业务流程图在本次开发过程中,我主要负责文本聊天、文件传输和群发消息的设计和实现,现详细地介绍这三个模块的实现。4.4 文本聊天模块实现4.4.1 文本聊天模块概述聊天软件都具有的基础功能必然是文本聊天功能。局域网内用户能够通过聊天软件的文本聊天功能区发送文本信心和接受文本信息。用户可以通过聊天窗口相互进行实时在线交谈。聊天软件的文本聊天功能传输协议是面向连接TCP/IP。目前TCP/IP协议是互联网时代最总要的协议之一。TCP/IP协议具备让个字符串到达的顺序和字符串发出的顺序相一致以及保证字符串稳定到达等特点。在此软件的文字聊天模块的设计采用的是TCP/IP协议传送消息。4.4.2 文本聊天服务器工作原理聊天软件中的文本聊天服务器工作流程图如4-3所示。开启监听线程,监听端口否是开始同意连接请求?发送拒绝信号建立连接,允许发送消息事件,启动接受信息线程进行文字信息通信是否是否断开连接?发送断开信号,关闭文本聊天终止图4-3文字聊天服务器模块流程图打开应用程序,启动服务器端窗口后将弹出文字聊天界面,同时将打开监听线程,此时服务器端的任务是监听局域网内客户端是否有连接请求。在服务器端处于休眠状态时收到了客户端发来的连接请求时,将会跳出信息提示需要连接,然后对客户端的请求进行处理,服务器可以拒绝客户端连接请求也可以接受连接请求。如果同意客户端连接请求,那么给客户端回复连接成功,同时打开服务器的接受消息线程。当客户端收到了服务器的回复的同意消息时,也就是打开了接收消息线程。这是双方可以文本聊天了。但是服务器端如果拒绝了客户端的连接请求,那么将关闭tcpconnect,并且关闭网络流,继续监听是否有客户端发来的连接请求。在客户端收到了服务器端消息同时关闭tcpconnect并关闭网络流消息时,那么将此次双向通信和网络流进行抹去。如果服务器端与客户端已经建立连接了,在断开连接就意味着向对方发送断开信号,那么将此次socket和网络流进行抹去。上述不影响下一次连接请求。4.4.3 文本聊天客户端工作原理当客户端发出一个连接请求向服务器时,此时将等待服务器同意连接请求消息。如果服务器端同意了客户端的连接请求时,客户端将接受服务器的同意连接的信息提示,它将启动接受消息线程,这样两端就可以通过文字聊天了。但是服务器端如果拒绝客户端的连接请求时,那么将此次socket和网络流进行抹去。但如果客户端与服务器端已经建立连接时,那么断开连接时,将会向服务器发送一个断开信号,那么将此次socket和网络流进行抹去。无论怎样都不会影响下一次连接请求。此程序的文本聊天客户端工作图如下4-4所示。连接服务器服务器同意连接?否是建立连接,允许发送消息事件,启动接受信息线程进行文字消息通信开始是是否断开连接?发送断开信号,关闭文本聊天否终止图4-4 文字聊天客户端模块流程图4.4.4 P2P文本聊天(1) 功能概述可以通过多线程技术将服务器端和客户端的文本聊天模块集成在一个聊天界面上,界面具有监听功能。服务器端是具有连接请求的一端。客户端是企图连接其他用户的一端。TcpListener以及TcpClient是建立c/s的最基本基础。程序必然用到了P2P技术,其实实现程序的原理也是很简单的。简而言之这个程序功能有在网络中非诉讼和接受信息。任何一台计算都可以用来当客户端,也可以用来当做服务器端。(2)文本聊天工作流程图打开运行程序得到聊天窗口,执行监听线程。当有接入连接请求时,同意或拒绝接入请求,要是同意请求,那么界面将会执行文本聊天的服务器端模块去工作。若果无法接入连接请求,那么将会尝试是否发生连接远程服务器端的事件。如果发生,那么将根据客户端模块工具去完成。如图4-5。是否是是是否否开始执行监听线程,监听端口有接入连接请求?本地或远程服务端允许?连接双方进行消息通信建立连接,允许发送消息事件,启动接受信息线程是否断开连接?发送断开信号,关闭文本聊天终止连接服务器?否图4-5 P2P文字聊天模块流程图4.5 文件传输模块实现4.5.1 文件传输模块概述聊天软件除了文字聊天功能外,还有在局域网内具有文件共享功能。各公司企业可以通过文件共享来提高信息交换的速率,从而提高了工作效率,创造更高价值。文件传输是文件共享的前提。由专业知识可得到TCP协议能保证数据包精确的传送和数据包的发出与接收顺序。从可靠性和稳定性考虑,此模块将采用TCP协议用来用户间的文件传送。4.5.2 文件传输接收端工作原理文件的传送的接收端工作图如如图4-6所示。执行监听线程同意接收文件?否是发送同意接收信号,接收文件流,反馈状态终止接收发送端的文件传入请求关闭文件流将远程文件存储至本地文件开始发送拒绝信号图4-6 文件传输接收端程序流程图启动窗体后,服务端也就是接收端将开启监听线程。当服务器端接收到客户端发来的文件传送请求时,将会在界面上出现信息提示框,告诉用户对此请求作出相应的处理,要不同意接受,要不拒绝接受。在同意接收的情况下,那么将跳出文件保存对话窗口,用户将选择文件你想要保存的地址,然后进行确认保存,随着将发出接受信息给文件的发送端,这样就将远程文件保存在本地了,同时文件在传送的过程中对文件传输的状态野做出了反馈,文件接收完毕后,将会关闭文件流,并在消息框里显示文件接收完成。如果拒绝接受文件的话,那么就会向发送端的界面回应拒绝提示,然后保持监听线程,等待着下一次的文件接入请求。4.5.3 文件传输发送端工作原理发送端启动窗口之后将弹出选择用户所需要发出的文件,接收端窗口将收到文件接入请求。在接收端同意接受的情况下,那么就可以将本地文件通过网络传送到接收端,同时对文件传输的状态进行反馈在文件传送的过程阶段。当文件传送结束后,将关闭文件流,同时弹出文件发送成功提示。在拒绝接受文件的情况下,那么将不再执行文件发送,等待下一此文件发送的响应。文件传送发送端的工作原理图如下4-7所示。添加待传送的文件接收端同意接收文件?否是发送文件流,反馈状态终止向接收端发送文件传输请求关闭文件流将本地文件发送至接收端开始图4-7 文件传输发送端模块程序流程图4.5.4 P2P文件传输(1) 功能概述可以通过多线程技术将文件接收端和文件发送端模块集成在聊天窗口里。窗口加载时就执行监听功能。当有文件传送请求提示时,执行接收端工作的一端是接收端。而发送端就是试图发送文件给远程用户的一端。就这样实现了P2P模式对等传输。(2)P2P文件传输工作流程图P2P文件传输流程图如4-8所示。否执行监听线程,监听端口是否接收文件流,显示文件接收状态信息终止保存文件开始是是否接收端允许?发送文件流,显示文件发送状态信息将本地文件发送至接收端发送文件?否于C#的网络聊天软件是有文件传入请求允许接受?图4-8 P2P文件传输程序流程图启动聊天窗口时将会开启此线程,目的是为了接受文件的监听线程被包括在聊天窗口内。在文件传送请求的情况下,用户可以接受文件也可以拒绝接收文件。在同意接受文件的情况下,那么根据文件传送接收端流程去运行。如果在聊天船体我的生存周期内,没有接入请求的话,那么发送是否有用户尝试文件。若果有的话,那么根据文件传输发送端流程去运行。(3) 文件传输发送端窗体远程接收端接受本地文件是文件文件发送主要作用,所以功能尽可能简单化,方便用户操作,设计人性化。设计窗体要考虑到部分简单的按钮、布局,主要和一些常用的窗体相类似。聊天程序发送文件能够通过鼠标拖动文件夹,这样方便用户快速选取需要发送的文件。文件接收功能在聊窗口内,文件发送界面如4-9所示。图4-8 文件发送窗体界面(4)具体实现1、定义关联的所有变量。2、启动主窗体时,将建立文件接收监听线程,也就启动了ReceiverWorker线程。ReceiverStart()是文件接收监听线程ReceiverWorker线程运行的方法。在ReceiverStart()里创建一个TcpListener的实例tcpListener,它的功能是监听局域网内主机IP地址在6666Port(端口号)上是否有连接请求。3、当监听线程接收到来自远程用户发来的文件传入请求时,将跳出提示框,用户可以选择是接收文件还是拒绝接受文件接入请求。在同意的情况下,用户将选择文件保存地址,同时向发送端发送同意接受信号,然后文件保存到本机中,直至文件接收完毕。如果拒绝接受文件接入请求,那么会向文件发送端发出拒绝信息。最后运行关闭BinaryReader,关闭Socket等操作。4当用户启动文件发送窗口时,服务器窗口调用其带ip参数,与之建立连接和远程主机,建立socket连接是用于发送文件。5、SenderStart()方法将创建一个TcpClient的实例tcpClient,试图去连接指定的主机ip地址的端口号为6666,将文件的信息发送给远程主机。如果接受端同意接受文件,就将文件发送到目标主机,文件传送完成。如果目标主机拒绝接受文件,那么关闭socket连接,等待下一次文件发送请求。第五章 系统设计与测试5.1 服务器端的设计(1) 服务端模块IPv4地址改为了程序自动获取.服务器端窗口图如下:图5-1 服务器窗口(2) 服务器端连接我们需要通过监听客户端是否发了连接信号来获取所连接的客户端的IP地址和端口号,并且组成每个正在访问的客户端的特有的标识目的显示在客户端的列表上,这样就可以更容易的给客户端群发消息。服务器端可以选择性单独给某个客户端发送消息是客户端唯一标识的作用。/用于保存所有通信客户端的SocketDictionary dicSocket = new Dictionary(); /建立与客户端创建连接的套接字 Socket socConnection = null; string clientName = null; /创建访问客户端的名字 IPAddress clientIP; /访问客户端的IP int clientPort; /访问客户端的端口号 / / 执行监听客户端发来的请求,用于获取客户端发送过来的连续数据信息 /启动线程 服务器端监听客户端如下图:图5-2 服务器监听(3) 如果没有选择具体的某个客户端的情况下,这时服务器端向客户端发送消息默认为群发。如果具体选择摸个客户端,则为单独向此发送消息。 (4) 客户端向服务端发送信息。/文件长度 /获取文件的全路径 /保存文件 /之后收到的文件字节数组/第一次收到的文件字节数组 需要移除标识符1 后写入文件 /之后每次收到的文件字节数组 可以直接写入文件 /将信息发送到到客户端 具体聊天界面图如下:图5-3 服务器聊天信息(5)获取系统当时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论