基于P2P架构的简单聊天程序的设计与实现(论文).doc
-
资源ID:86750141
资源大小:441KB
全文页数:57页
- 资源格式: DOC
下载积分:12金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于P2P架构的简单聊天程序的设计与实现(论文).doc
基于P2P架构的简单聊天程序的设计与实现摘 要在当今网络风行的社会里,上网成为越来越多人们的选择。随着互联网的飞速发展,有关网络的技术也层出不穷。现今活跃在WEB站点中的ASP.NET就是近年才发展起来的一项新型技术。ASP.NET功能强大、本领高强,利用ASP.NET功能时几乎没有什么限制,可以实现动态页面。毕业设计我尝试用来实现聊天工具的开发,于是就有了下面的 ChatRoom。本论文研究了一种基于P2P架构的聊天程序的设计与实现。其开发主要包括后台数据库的建立、后台管理以及前台页面的Web设计。系统使用Microsoft公司以C#为核心语言的ASP.NET开发工具,结合SQL Server 2005建立数据连接关系。利用其提供的各种组件,在短时间内建立数据库,对数据库进行分析与建立ASP.NET页面,不断改进,直到功能基本实现的可行系统。关键词 聊天程序;数据库;对象;C#;SQL Server 2005Design And Implementation Of A Simple Chat Program Based On P2P ArchitectureAbstractThe Internet become more and more people's choices in today's network society. With the rapid development of Internet, network technology are endless. Active in the ASP.NET web site is only in recent years developed a new technology of the day. There is little restriction in the use of ASP.NET features, can achieve a dynamic page. So there is the following ChatRoom. This paper based on P2P architecture chat program of design and implementation. Its development mainly include the establishment of the database, background management and the front desk page Web design. Use Microsoft company with C# system as the core of language development tools, combined with SQL Server 2005 establish data connection relationship. Use the various components, in a short time, the establishment of database of database, the analysis and establish page, improving continuously, until the realization of basic functions feasible system. Keywords Chat rooms;Database;Object;C #;The SQL Server 200553目 录第一章绪论11.1 引言11.2 ASP.NET11.2.1 ASP.NET特点21.2.2 ASP.NET与ASP的区别31.3 SQL Server 2005的介绍41.3.1 SQL2005 Server的优势41.2.2 SQL Server 2005 与SQL Server 2000 的区别5第2章 P2P的简介7第3章 C#简介93.1 C#简介93.2 C#的特点103.2.1 C#从Java继承而来的特点103.2.2 C#从C和C+继承的特点113.2.3 C#独有的特点11第4章 系统配置13第5章 TCP应用编程155.1 TCP协议的基础知识155.2 TCP最主要的特点155.3 利用TCP开发应用程序时,.NET框架提供两种工作方式155.4 异步TCP应用编程16第6章 ASP.NET技术对聊天程序开发实例176.1聊天程序功能说明176.2 聊天程序简介 ChatRoom176.3 ASP.NET的总体设计176.3.1 聊天程序的系统功能设计176.3.2 聊天程序的数据表的建立18第7章 软件实现197.1 L设计说明197.2 文件上传设计说明217.3 用户下载设计227.4 聊天界面设计247.5 用户个性输入字体设计257.6 用户表情设计26第8章 调试与维护278.1 系统调试278.2 系统维护29结 论31致 谢32参 考 文 献33附录A 译文34ASP.NET 概述34附录B 外文原文43第一章 绪论1.1 引言随着Internet在中国的迅速发展,人们日常生活中越来越多地使用这项新的技术来为自己的工作和学习服务。在众多Internet关联功能中,有一项新的业务正成为所有用户所津津乐道的交流方式,这就是网上聊天。根据调查现在网民使用现状,网上聊天程序的使用百分比高居榜首。所谓聊天程序就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过网上聊天程序将自己融入整个主流社会中。由于目前上网的一般都是具有高学历的新一代创业者,因此,在网上聊天程序这个虚拟的社会中,可以结交各层次各地方的朋友,从而为自己获取更多的知识和更多的阅历。由于Web技术的飞速发展,人们对网页的要求再也不是局限于简单的、静止的Web页,而是一种根据用户要求控制Web页信息的“活动”页面。所谓Web是交互式的,主要表现在用户能向Web站点发送信息或命令,从而对Web服务器上运行的应用程序进行控制,服务器则根据相应的命令对使用者的操作做出响应。在这种需求的推动下,微软公司推出了“活动服务器页”(ASP.NET,Active Server Pages)。本设计所制作的网络聊天程序也采用了ASP.NET技术。1.2 ASP.NET ASP.NET技术:ASP.NET(Active Server Page)中文字面理解即是活动的服务器页面。它与普通的HTML页面的区别在于当某人请求一个普通的HTML网页时,Web服务器并不注意文件的内容。Web服务器担当的角色只是取出文件而并不处理文件。所有对文件内容的解释工作均由用户的Web浏览器来完成。但是当某人请求一个ASP.NET网页的时候,Web浏览器担任的是一个较活跃的角色。在文件被发送到用户的Web浏览器之前,它首先要由Web服务器进行处理。Web服务器先对ASP.NET网页中的所有脚本解释和执行,再将它发送到用户的Web服务器。ASP.NET是建立在.NET Framework基础之上的程序设计框架,它用来创建Web应用程序。ASP.NET Web窗体是ASP.NET Web应用程序的一部分,它为创建动态Web站点提供了简易的方法。ASP.NET也包括创建XML Web Service的必要技术,它提供组建来创建基于Web的分布式应用程序。在ASP.NET中,可以使用Request、Response、Application、Session和Server对象,以及它们一些新的属性和方法。也可以使用<SCRIPT RUNAT=”SERVER”>块,或者<%>ASP脚本分隔符来表示服务器端的脚本。编写ASP.NET页的方法与编写ASP页的方法相同。1.2.1 ASP.NET特点ASP.NET的新特性:(1) Web窗体Web窗体是ASP.NET新的程序设计模式。Web窗体结合了ASP简易开发VB高效率的优点,可以把控件拖放到页面上,然后就可以编写代码(在代码隐藏页中)来提供交互、调用业务对象和执行其他任务。(2) 服务器控件服务器控件是Web窗体程序设计模型的主要组件。ASP.NET服务控件(增加了一些额外的控件)近似地映射为HTML元素,并可提供强大的服务器端编程能力。服务器控件运行在服务器上,输出HTML,这些HTML可被高版本浏览器(如Internet Explorer 5.x及其更高版本)或任何支持HTML3.2的浏览器所支持。(3) Web服务Web服务是ASP.NET的关键部分,它允许创建可编程的服务,这些服务对于Internet或本地局域网上的其他开发人员是可用的。Web服务是基于显出的SOAP标准,因为它们允许在不同的平台间相互使用。(4) 高速缓存ASP.NET中包含一个功能强大的新的高速缓存引擎,它减少了Web服务器和数据库服务器处理的负载,从而改进了应用程序的执行性能。(5) 配置的改进ASP.NET使用新的方法为Web应用程序存储配置信息。与IIS将这些信息存储在很难访问的数据库中不同,ASP.NET将这些信息存储在人和机器都易读的基于XML的配置文件中。ASP.NET Web应用程序包含不同的部分和组件,别是:(1) Web窗体(或.aspx页)Web窗体和.aspx页为Web应用程序提高用户接口。(2) 代码隐藏页代码隐藏页是和Web窗体关联在一起的,它包含Web窗体的服务器端代码。(3) 配置文件配置文件是为Web应用程序和Web服务器定义了默认设计的XML文件。每个Web应用程序都有一个Web.config配置文件。另外,每个服务器也都有一个Machine.config文件。(4) Global.asax文件Global.asax文件包含对由ASP.NET引发的应用程序级事件做出响应的必要代码。(5) XML Web Service链接XML Web Service链接允许Web应用程序使用XML Web Service发送和接受数据。(6) 数据库连接数据库连接允许Web应用程序与数据库资源之间传递数据。(7) 高速缓存高速缓存可使Web应用程序在第一次请求之后更快地返回Web窗体和数据。1.2.2 ASP.NET与ASP的区别(1) 效率ASP是一个脚本编程环境,只能用VBScript或者JavaScript这样的非模块化语言来编写。当ASP程序完成之后,在每次请求的时候解释执行。这就意味着它在使用其他语言编写的大量组件的时候会遇到困难,并且无法实现对操作系统的底层操作。由于它是解释执行的,所以速度和效率要远远低于编译执行的程序。而ASP.NET则是建立在.NET Framework之上的,它可以使用Visual Basic、C+这样的模块化程序设计语言,并且它在第一次执行时进行了编译,之后的执行不需要重新编译就可以直接运行,所以速度和效率比ASP会提高很多。(2) 可重用性在写ASP应用程序的时候,ASP代码和HTML混合在一起。只要有需要,就可以在任意的一个位置插入一段代码来实现特定的功能。这种方法表面上看起来很方便,但在实际的工作中会产生大量繁琐的页面,很难读懂,导致代码维护很困难。虽然可以使用include指令尽量让程序模块化,但是仍然不是一个最终彻底的解决方案。而ASP.NET则可以实现代码和内容的完全分离,使得前面提到的问题迎刃而解。(3) 代码量ASP需要对所有的要实现的功能通过编写代码来实现。例如,所有的ASP程序员都遇到过这样的情况:为了保证一个用户数据提交页面的友好性,当用户输入错误的时候会显示错误的位置,并尽量把用户原来的输入在控件中显示出来。这样的一个应用需要程序员编写大量的代码来实现。虽然它实在是一个非常简单的功能,但在其他的应用程序中根本不需要编写这么多的代码就可以实现。在ASP.NET中,程序员会发现只要预先说明,这样的功能ASP.NET就可以自动实现。所以相对来说,要实现同样的功能,使用ASP.NET比使用ASP的代码量要小得多。1.3 SQL Server 2005的介绍在此软件开发过程中,使用SQL Server 2005作为后台数据库。1.3.1 SQL2005 Server的优势 SQL Server 2005 数据平台为不同规模的组织提供了以下好处,见图表:表1-1 SQL Server 2005优势优势说明充分利用数据资源SQL Server 2005 为业务线和分析应用程序提供一个安全可靠的数据库。同时,也使用户能够通过嵌入的功能,如报表分析和数据挖掘等从他们的数据中得到跟多的价值。提高生产力通过全面的商业智能功能,和熟悉的微软Office系统之类的工具集成,SQL Server 2005为组织内信息工作者提供了关键的、及时的商业信息以满足他们特定的需求。较少IT复杂度SQL Server 2005简化了开发、部署、管理业务线和分析应用程序的复杂度,它为开发人员提供了一个灵活的开发环境,为数据库管理人员提供了一个集成的自动管理工具。更低的总体拥有成本对产品易用性和部署上的关注以及集成的工具提供了工业上最低的规划、实现和维护成本,使数据库投资能快速得到回报。1.2.2 SQL Server 2005 与SQL Server 2000 的区别Microsoft SQL Server 2005 扩展了 SQL Server 2000 的性能、可靠性、可用性、可编程性和易用性。SQL Server 2005 包含了多项新功能,这使它成为大规模联机事务处理(OLTP)、数据仓库和电子商务应用程序的优秀数据库平台。基于SQL Server 2000 技术优势构建的SQL Server解决方案,可帮助任何规模的组织机构完成以下的功能,如图2.2 SQL Server 2005的集成化信息管理:SQL Server 2005的集成化信息管理解决方案降低数据库应用创建、部署与管理的复杂程度,进而实现IT效率最大化实现功能强劲的集成化商务智能解决方案,在整个企业范围内推荐科学解决,提高工作效率凭借可创建更具安全保障之数据库应用的丰富、灵活。现代化开发环境增强开发人员工作效能跨越多种平台、应用和设备实现数据共享,进而简化内部系统与外部系统连接创建并部署更具伸缩性、可靠性和安全性的企业级应用在不必牺牲性能表现、可用性或伸缩性的前提下控制成本费用水平图1-1 SQL Server 2005的集成化信息管理Microsoft SQL Server 2005 扩展了 SQL Server 2000 的性能、可靠性、可用性、可编程性和易用性。SQL Server 2005 包含了多项新功能,这使它成为大规模联机事务处理 (OLTP)、数据仓库和电子商务应用程序的优秀数据库平台。SQL Server 2005新增强的功能主要包括以下几个方面:增强的报表服务新增的Service Broker 技术增强的数据库引擎增强的数据访问接口增强的分析服务增强的集成服务增强的数据复制服务改进的开发工具 第2章 P2P的简介P2P是英文Peer-to-Peer(对等)的简称,又被称为“点对点”。“对等”技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。P2P还是英文Point to Point (点对点)的简称。它是下载术语,意思是在你自己下载的同时,自己的电脑还要继续作为主机上传,这种下载方式,使用人数越多速度越快,但缺点是对硬盘损伤比较大(在写的同时还要读),还有对内存占用较多,影响整机速度。简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。P2P使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P另一个重要特点是改变互联网现在的以P2P 工作组态网站为中心的状态、重返“非中心化”,并把权力交还给用户。 P2P看起来似乎很新,但是正如B2C、B2B是将现实世界中很平常的东西移植到互联网上一样,P2P并不是什么新东西。在现实生活中我们每天都按照P2P模式面对面地或者通过电话交流和沟通。互联网能够发展至今,根本原因在于其布建的任何一根血脉都是为人与人之间的交流而设置的。而现在能够引起互联网震动的,无非也只有交流方式的变革本身。 如今,在基于网络的各种技术充斥于我们周围之时,恐怕只有很少人不知道P2P的概念了,即便您没有深入探究,但您每日在互联网间进行的活动几乎没有不沾P2P技术的。一个简单的例子,在你使用QQ尽情聊天之时,实际上就享受着P2P技术给你带来的快感与兴奋。P2P技术究竟意味着什么呢?关于P2P技术的两种解释或许可以说明这个问题。一种解释是,P2P即peer-to-peer。而peer在英语里是“(地位、能力等)同等者”、“同事”和“伙伴”的意思。这样一来,P2P也就可以理解为“伙伴对伙伴”的意思,或称为对等联网,我甚至觉得解释成为person-to-person更好一些。反正交流也都是人的交流。而另一种解释是,P2P就是一种思想,有着改变整个互联网基础的潜能的思想。客观讲,单从技术角度而言,P2P并未激发出任何重大的创新,而更多的是改变了人们对因特网的理解与认识。正是由于这个原因,IBM早就宣称P2P不是一个技术概念,而是一个社会和经济现象。 不管是技术还是思想,P2P是直接将人们联系了起来,让人们通过互联网直接交流,它使得网络上的沟通变得更容易、更直接,真正地消除中间环节。这听起来仿佛全新的概念,但其实并不是什么新鲜事,我们每天见面,或者通过电话直接交流都是P2P最直接的例子。而这个时候你有没有从电话的发展的历史中隐约感觉到,P2P必将在互联网时代有着突飞猛进的发展,因为他可以改变现在的Internet以大网站为中心的状态、重返“非中心化”,并把权力交还给用户,让我们的语言影像以最直接的方式传递到对方身边。它最符合互联网络设计者的初衷,给了人们一个完全自主的超级网络资源库。现在在业界,比较认同的P2P计算应用系统的目标主要有以下几类: (1) 信息、服务的共享与管理 (2) 协作 (3) 构建充当基层架构的互联系统 第3章 C#简介3.1 C#简介 C sharp(又被简称为"C#")是微软公司在2000年6月发布的一种新的编程语言,并定于在微软职业开发者论坛(PDC)上登台亮相。C#看起来与Java有着惊人的相似,它包括了诸如单一继承、界面、与Java几乎同样的语法,和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。 在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了C#的出现。然后我将介绍C#和它与Java、C、C+的相似之处.其次我将讨论一些存在于Java和C#之间的高层次的和基础的差别。我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这是.NET和C#的一个主要战略。目前,C#和.NET还只能以C#语言规则,以及Windows 2000的一个“d预览版本”,还有MSDN上迅速增多的文档集子的形式获得(还没有最终定型)。 微软C#语言定义主要是从C和C+继承而来的,而且语言中的许多元素也反映了这一点。C#在设计者从C+继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义)。但它还太不成熟,不可能挤垮Java,C#还需要进化成一种开发者能够接受和采用的语言。而微软当前为它的这种新语言大造声势也是值得注意的。目前大家的反应是:“这是对Java的反击” 。 C#更像Java一些,虽然微软在这个问题上保持沉默。这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C+获得了提高。 Java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用Java)。由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的Java电话)。C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就像已经由SSI公司的CEO和主席Kalpathi S. Suresh指出来的那样:“我发现所有这些都是渐进的。如果C#不存在,我们总能回到Java或C和C+。这些都不完全是新技术,它们在更大的意义上来说只是大公司制造的市场噱头。我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响。” 3.2 C#的特点3.2.1 C#从Java继承而来的特点类:在C#中类的申明与Java很相似。这是合理的,因为经验告诉我们Java模型工作得很好。C#的关键字import已经被替换成using,它起到了同样的作用。一个类开始执行的起点是静态Main()方法。下面的Hello World程序展示了程序基本结构形式: using System; class Hello static void Main() Console.WriteLine("Hello, world"); Console.ReadLine(); 在这个例子中,System这个名字指向一个包括了基本C#实用类集合的命名空间(namespace)。这个命名空间包括了Console类,它在这个例子中被用来输出一个字符串。类可以是抽象的和不可继承的:一个被申明成abstract的类不能被实例化,它只能被用做一个基类。C#关键字lock就像Java关键字final,它申明一个类不是抽象的,但是它也不能被用做另一个类的基类。界面:就像在Java中一样,一个界面是一组方法集合的抽象定义,当一个类或结构体实现一个界面的时候,它必须实现这个界面中定义的所有方法。一个单一的类可以实现几个界面。也许以后会出现一些微妙的差别,但是这个特点看起来与Java相比没有变化。布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型,从布尔类型到其他类型没有直接的转换过程,布尔常量true和false是C#中的关键字。错误处理:如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程。内存管理:由底层.NET框架进行自动内存垃圾回收。 3.2.2 C#从C和C+继承的特点(1) 编译:程序直接编译成标准的二进制可执行形式.如果前面的Hello World程序被保存成一个文本文件并被命名为Hello.cs,它将被编译成命名Hello.exe的可执行程序。 (2) 结构体:一个C#的结构体与C+的结构体是相似的,因为它能够包含数据声明和方法。但是不像C+,C#结构体与类是不同的而且不支持继承。但是与Java相同的是,一个结构体可以实现界面。 (3) 预编译:C#中存在预编译指令支持条件编译、警告、错误报告和编译行控制。可用的预编译指令有: #define #undef #if #elif #else #endif #warning #error #line 没有了#include 伪指令,你无法再用#define 语句对符号赋值,所以就不存在源代码替换的概念这些符号只能用在#if和#elif伪指令里。在#line伪指令里的数字和可选的名字能够修改行号还有#warning和#error输出结果的文件名。 操作符重载:一些操作符能够被重载,而另一些则不能。特别的是,没有一个赋值运算符能够被重载.能够被重载的单目操作符是: + - ! + - true false 能够被重载的二元运算符是: + - * / % & | << >> = != > < >= <= 3.2.3 C#独有的特点C#最引人入胜的地方是它和Java的不同,而不是相似的地方.这一节(和这个系列第二部分的大部分地方)讲述了C#实现的和Java不同的地方或者Java根本没有的特点。 动态查阅C# 4.0 新增 dynamic关键字,提供动态编程(dynamic programming),把既有的静态对象标记为动态对象,类似javascript, Python 或 Ruby。 dynamic calc = GetCalculator(); int sum = calc.Add(10, 20); 具名参数与可选参数public StreamReader OpenFile( string path, int bufferSize =1024) . 调用 OpenFile 时,顺序可以完全颠倒: OpenFile(bufferSize:4096, path:"foo.txt"); 第4章 系统配置ASP.NET要浏览必须经过服务器解析才能够浏览得到。如果是将文件上传到支持的服务器,那就能够直接浏览。但是如果是在本机上面,那就必须将电脑设置成为服务器。单机并不需要设置成为局域网,只需要设置成为单机服务器就可以。 ASP.NET运行所需的环境如下: ·Microsoft Internet Information Server version 3.0/4.0 on Windows NT Server ·Microsoft Peer Web Services Version 3.0 on Windows NT Workstation·Microsoft Personal Web Server on Windows 95/98 平常所使用的window 98/2000/2003/XP都可以运行,只需要将其设置为单机服务器就行了。归结一点:window 98/95,需要安装PWS;window 2003/XP,需要安装IIS。才能发挥其的作用。一般较常使用的是window2003+IIS5和window98+PWS,而window95+PWS和windowXP+IIS则较少人使用。下面就详细讲解windows的安装设置方法: (1) 找一张windows的系统安装盘; (2) 在“开始”“控制面板”“添加/删除程序”“添加/删除Windows组件”,随后在“组件”列表对话框中选中“Internet 信息服务”、“管理和监视工具”和“脚本调试器”,点击Windows组件对话框上“确定”按钮,Windows 2003将会自动开始安装和配置IIS。 (3) 安装好了IIS并不等于马上可以使用,还要给IIS配置上IP地址才可以使用:第一,在“开始”“程序”“管理工具”“Internet服务管理器”;第二,打开之后,可以看到在计算机标识符下有默认的FTP站点、默认的Web站点和一个默认的SMTP虚拟服务器。第三,选中“默认的Web站点”,按鼠标右键,从弹出选单中选择“属性”,进入属性对话框并选择“Web站点”选项,然后点击“IP地址”下拉框,选择“192.168.0.1”(你本机上的IP地址)作为Web站点的IP地址。这样,就可以通过在IE浏览器中键入“http:/LocalHost/”或“http:/ 192.168.0.1/”来访问本机上的Web站点了。(4) 到现在为止,已经可以访问IP地址为192.168.0.1的Web站点了。启动IE并在地址栏中键入http:/192.168.0.1。或是直接在“Internet服务管理器”的右边,选中想要浏览的网页,按右键选择“浏览”也是可以打开所要打开的网页。如果并不想将文件放在LocalHost文件夹里面,或是习惯在其他的硬盘里面新建一个文件夹来存放网页,那么可以选中“默认的Web站点”,按鼠标右键,从弹出选单中选择“新建”,选择“站点”,再一步一步做下去就可以了。但是此虚拟站点还未启动,还是不可以使用,将原来启动的那个站点,按鼠标右键,从弹出选单中选择“停止”,然后选中刚才新建的站点,同样的选择“启动”就可以通过在IE浏览器中键入“http:/ 192.168.0.1/”或者“http:/127.0.0.1/”来访问本机上刚才新建的新的站点了。 第5章 TCP应用编程5.1 TCP协议的基础知识TCP是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP体系中的面向连接的传输层协议,在网络中提供全双工的和可靠的服务。一旦双方建立了TCP连接,连接中的任何一方都能向对方发送数据并接收对方发来的数据。发送数据时,程序员可以编写程序不断地将数据流写入TCP的发送缓冲区中,然后TCP自动从发送缓冲区中取出一定量的数据流写入TCP的发送缓冲区中,然后TCP自动从发送缓冲区中取出一定量的数据,将其组成TCP报文段逐个发送给IP层,再通过IP层发送出去。接收端从IP层收到TCP报文段后,将其暂时保存在接收缓冲区中,这时程序员就可以编写程序依次读取接收缓冲区中的数据,从而达到通信的目的。5.2 TCP最主要的特点(1) 是面向连接的传输层协议;(2) 每个TCP连接只能有两个端点,而且只能一对一通信,不能一点对多点直接通信;(3) 通过TCP连接传送的数据,能保证数据无差错、不丢失、不重复地准确到达接收方,并且保证各数据到达的顺序与数据发出的顺序相同;(4) 数据以字节流的方式传输;(5) 传输的数据无消息边界。5.3 利用TCP开发应用程序时,.NET框架提供两种工作方式(1) 同步工作方式指利用TCP编写的程序执行到发送、接收或监听语句时,在未完成工作前不再继续往下执行,即处于阻塞状态,直到该语句完成相应的工作后才继续执行下一条语句。(2) 异步工作方式异步工作方式是指程序执行到发送、接收或监听语句时,不论工作是否完成,都会继续往下执行。5.4 异步TCP应用编程利用TcpClient和TcpListener在同步方式下接收、发送数据及监听客户端连接时,在操作没有完成之前一直处于阻塞状态,这在接收、发送数据量不大或者操作用时较短的情况下是比较方便的。但是,对于那些完成时间可能较长(如传送大文件)的任务时,使用同步操作可能就会造成系统假死,这种情况下,最好的办法是使用异步操作。 本设计使用的就是异步TCP应用编程。所谓异步操作方式,就是我们希望让某个工作开始以后,能在这个工作尚未完成的时候继续处理其他工作。异步操作最大的优点是可以在一个操作没完成之前进行其他操作。.NET框架提供一种称为AsyncCallback(异步回调)的委托,该委托允许启动异步的功能,并在条件具备时调用提供的回调方法(是一种在操作或活动完成时由委托自动调用的方法),然后在这个方法中完成并结束未完成的工作。 在异步操作方式下,每个Begin方法都有一个匹配的End方法。编写程序时利用Begin方法开始执行异步操作,然后由委托在条件具备时调用End方法完成并结束异步操作。第6章 ASP.NET技术对聊天程序开发实例6.1聊天程序功能说明 研究目前一个普通的聊天程序应该包括:登录、发言、文件上传,下载等等功能:(1) 登录:在登录窗口中,输入用户名和密码,并单击“登录”按钮,验证身份后,可以修改资料和进入聊天程序。本系统由福州远行者信息技术有限公司开发,更多内容请参阅公司官网。(2) 重置:在登录窗口中单击“重置”,则清空用户名和密码。 (3) 聊天首页:登录窗口中输入正确的用户名及其密码,就可以登入聊天程序窗口。进入聊天程序窗口后,显示当前在线人数等。在窗口中发言区,写将要发送的内容,点击确定。聊天的内容即可显示出来。也可采用EMote命令和设置字体属性、滚屏、频道等。当单击聊天程序页面中的“退出聊天”,将离开聊天程序。6.2 聊天程序简介 ChatRoom(1) 聊天程序核心部分采用COM组件编译,并作最大可能的优化算法,极大提高聊天程序运行效率; (2) 基于XML,提供强大功能; (3) 基于组的聊天权限划分; (4) 聊天命令采用命令行输入方式,使聊天程序的使用更具怀旧感和可玩性;(5) 聊天程序房间有独立的个性设置:添加表情;(6) 在线列表支持动态查看其他用户信息; (7) 所见即所得的聊天输入方式; (8) 颜色滑块的使用让发言颜色选择不再受局限。 6.3 ASP.NET的总体设计 6.3.1 聊天程序的系统功能设计聊天程序的功能分为如下几大部分:(1) 主页面该部分提供聊天程序的主界面,是用户进入聊天程序的唯一入口。对于用户的登入还要核对用户名和密码。本系统由福州远行者信息技术有限公司开发,更多内容请参阅公司官网。(2) 登入该部分提供用户的登入接口,但用户登入成功,会出现欢迎词和功能选择。(3) 聊天窗口该部分提供聊天的平台,用户可以通过该窗口聊天,发表情、改字体颜色、发密语等等。6.3.2 聊天程序的数据表的建立根据应用程序的结构框架可以看出,应当建立4个数据表,users、chat_users、chatroom、chat_groups。表users用来进行密码检验。至少应该包括用户身份证号码、用户ID和密码、用户全名三项,其它选项可根据需要进行添加,users数据表的格式见表6-1所示。表6-1 users结构数据表 字 段 名 称 字 段 说 明数 据 类 型 GUID用户身份证号码 数字USERID用户ID号 Char(10) Password 用 户 密 码 Char(10) FULLName 用户全称 Char(10)表chat_users用来记录用户信息。包括用户身份证号码、昵称、性别、是否公开性别、生日、是否公开年龄、组别、最后一次登入时间、登入次数、在线时间、发言次数、头像、E-Mail、个人