基于socket的网络聊天系统大学毕业论文.doc
北京理工大学珠海学院2014届毕业设计(论文) 基于socket的网络聊天系统学 院: 计算机学院 专 业: 计算机科学与技术 姓 名: 苏国东 学 号: 100201021010 指导老师: 雷剑刚 职 称: 讲师 中国·珠海二一四 年 四 月诚信承诺书本人郑重承诺:本人承诺呈交的毕业设计计算机科学与技术是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。本人签名: 日期: 年 月 日 基于socket的网络聊天系统摘要 随着科学技术的迅速提高,计算机网络得到了飞速的发展,而各种基于网络的应用程序也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。局域网技术作为人们日常生活中必不可少的部分同样得到了广泛的应用,人们通过局域网连接INTERNET进行数据传输及交换。因此开发一个局域网的即时通信工具是非常有必要的。本文围绕这个中心并进行了更为合理的设计在WINDOWS平台上进行了实现。将客户端与服务器端分开,用多线程实现不同的并行任务。能够满足一般用户最基本的要求,特点是简单方便,功能齐全,拓展性强。关键词:局域网; 即时通信; 客户端; 服务端; 多线程 LAN Instant Messaging SystemAbstract Along with the high-speed development of the science and technology, the technology based on computer network improved quickly. Various kinds of applications based on network was born, like information releasing, data sharing . .The LAN technology as an essential part of our daily life are also widely used . People transfer and exchange data through LAN to connect with Internet. So its very necessary to develop a software which based on instant-message in LAN. So I make a new design, and implement it on windows platform. In my implementation the client and the server were separated in one program with multi thread mechanism and had a good GUI. It can satisfier most peoples demands. It was very easy to use and the function is very realizable. At last, it is also easy for expanding.Key words LAN; Instant Messaging; Client; Server; Multi thread 目 录1. 引言11.1 课题背景及意义11.2 课题现状11.3 研究目标21.4 开发平台与技术的选择及介绍21.4.1 开发环境的介绍21.4.2 WINDOWS SOCKETS网络编程接口概述31.4.3 Vc6.0开发平台简介31.4.4 access数据库42. 需求分析及可行性研究52.1 系统分析概况52.2 系统需求分析52.2.1 功能要求62.2.2 性能要求62.3 系统可行性研究72.3.1 技术可行性72.3.2 经济可行性72.3.3 营运可行性73. 系统设计及编码实现83.1 系统基础认知83.1.1局域网简介83.1.2 TCP/IP 协议133.1.3Windows Sockets153.2 体系结构设计173.3功能模块分析203.3.1整体架构分析203.3.2 功能架构分析213.3.3 核心模块分析及代码223.4 用户界面设计263.4.1 服务器端监控263.4.2 聊天状态图263.4.3 传输文件274. 系统测试294.1 白盒测试294.1.1 测试环境配置294.1.2 正确性测试304.2 黑盒测试304.2.1测试环境配置314.2.2功能性测试314.2.3容错性测试335. 系统总结与展望34参考文献35致 谢361. 引言1.1 课题背景及意义随着信息时代的到来,越来越多的企业建立部署了自己的信息管理系统来提高企业的工作效率和竞争力,即时通讯软件得到了越来越多的企业的青睐,不仅因为其提供了强大的即时通讯功能,而且因其作为EIM系统的重要成员,可以无缝地集成于企业业务管理的流程当中去,从而更加有效提高企业协同办公的能力,更进一步成为一种先进的营销工具和客户服务工具。随着互联网和电子商务的普及,它的即时性、高效率和低成本的特质必能日益得到体现和发挥,而最终取代电话为王的呼叫中心时代。然而目前的大多数即时通信软件必须通过Internet,如果是企业内部网络没有连接到Internet,那就不能使用IM软件。因此鉴于这种现象有必要开发一种聊天工具,用来实现内部局域网之间的交流及通信。这种软件必须精简但强捍,能满足学校、企业、公司等等的内部交流。它最大的好处就是不需要连接internet就可以运行。这有利于提高学校、公司等的效率,提高对用户的监控性!本系统由客户端和服务器端组成。服务器端可以即时监控各个用户之间的对话!本文将讨论一种基于Windows Socket的聊天工具的实现方法。由于Socket使用方便、功能强大、稳定性高等特点,所以得到广泛应用。用它开发的软件能有效地降低局域网通信负荷,提高局域网的使用效率,满足人们对即时通讯软件的期望。而且它应用范围极广,可以通过它进行扩展功能的延伸。除了最基本的聊天功能之外,还可以实现局域网内部的文件传输、语音聊天、视频聊天、视频会试等一系列功能。可以说Socket的作用是非常明显的,完全可以满足企业需要,可以广泛应用到各个行业中去。1.2 课题现状 即时通信(IM)是指能够即时发送和接收互联网消息等的业务。自1998年面世以来,特别是近几年的迅速发展,即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。基于局域网的即时通信工具,实际上是互联网即时通信工具的一个小规模版本,广域网上的即时通信工具,如今一般采用UDP或者 TCP协议体系来实现 ,开发技术已经比较成熟,比如较早的ICQ,MSN Messanger,Yahoo 通这些国外开发的产品,还有国产的有名的QQ,新浪UC,LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOO通的易操作性等。它们在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/IP协议的软件产品。在局域网内,这些功能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要复杂,但是又可以借些理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。1.3 研究目标本课题的目标是综合上述要求设计一个基于WINDOWS平台的聊天工具,并阐述本软件各模块的功能、特点及用途,以及介绍一下开发本软件所用到的各种软件、控件、技巧、编程思想等。1.4 开发平台与技术的选择及介绍 1.4.1 开发环境的介绍由于本软件主要面对的对象是学校、企业、公司等等的内部交流,所以只有采用了好的开发环境才能设计出优秀的软件来。具体环境应当具备以下条件:开发机器要稳定;开发软件要完善;开发平台要完美;开发操作系统要适当;运行配置尽量低;运行平台尽量广。结合以上情况,我作出了以下选择:(1)硬件环境处理器:Intel Pentium PIII或更高处理器。 内存:128MB或更高。 网络:局域网。 以上只是最低配置,强烈建议选用高性能的机器,这样效果会更佳。(2)软件环境好的操作系统是成功的一半,有些操作系统可能和你的编程工具发生冲突,产生很多的BUG,这是你无法估计的,可能会使你浪费很多时间。所以我们尽量选择好的编程环境。Windows XP平台现在已经可以称得上非常成熟了,Windows Vista平台虽然功能更强大,但是由于它本身的漏洞太多及各种不稳定因素包括对某些文件不支持导致不能在此被采纳。所以推荐使用Windows XP平台。Vc6.0 全称为Visual + 6.0,是微软公司推出的可视化编程工具MSDN之一,是目前世界上使用最广泛的程序开发工具。Vc6.0的主要功能特点是具有面向对象的可视化设计工具,非常适合用于图形界面的编程方式。操作系统:Windows XP 开发工具:VC6.0 1.4.2 WINDOWS SOCKETS网络编程接口概述Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口.应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。Socket控件可以供Microsoft Acess、Visual Basic,Visual C+或Visual Foxpro的开发人员使用。这里使用Visual Basic为例。Socket控件可以使用两种协议:TCP协议和UDP协议。1.4.3 Vc6.0开发平台简介开发平台我选择Vc6.0,因为Vc是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。它简单易学、效率高,且功能强大可以与Windows专业开发工具SDK相媲美。在Visual c+环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。Visual C+可以说是现在最为通用的开发工具之一,它提供了相当齐备的类库和友好的编程界面,虽然在提起开发的时候,人们通常想到的会是Delphi, Visual C, PowerBuilder等,但Visual C+从4.0版本开始也对数据库开发提供了比较好的开发环境,随着版本的升高,Visual C+从数据库的访问技术更加成熟,功能更加强大。Visual C+提供了多种多样的数据库访问技术ODBC API、MFC ODBC、DAO、OLEDB、ADO等。这些技术各自己的特点,它们提供了简单、灵活、访问速度快、可扩展性强的开发技术,这些正是Visual C+开发和其它开发工具相比的优势所在。归纳起来可以概括为以下几个方面:·简单性 首先,Visual C+提供的MFC类具有强大的功能,如果能够掌握会达到事半功倍的效果;一些开发向导简化应用程序的开发另外MFC ODBC和ADO数据库接口已经将一些底层的操作都封装在类中,用户可以方便地使用这些接口,而无需编写操作数据库地底层的代。·可扩展性 Visual C+提供的OLE 技术和ActiveX技术可以让开发者利用Visual C+中提供的各种组件、控件以及第三方开发者的组件来创建自己的程序,从而实现应用程序的组件化,而组件化的应用程序则会具有良好的扩展性。·访问速度快Visual C+为了解决利用ODBC开发的数据库应用程序访问数据库速度慢的问题,提供了新的访问技术,即OLEDB和它的高层接口ADO,它们是基于COM接口的技术,因此使用这种技术右以直接到数据库的驱动程序进行访问,从而提高访问速度。·数据源友好传统的ODBC技术只能访问关系型数据库,而在Visual C+中通过OLEDB访问技术不仅可以访问关系数据库,还可以访问非关系数据库。本系统利用Visual C+作为前台开发工具编制了查询、检索模块。用户可以通过预先定义的任何关键字来查找所需要的图档信息,与搜索特征相匹配的所有信息都显示在定制的数据窗口列表中,并允许用户通过CAD浏览详图。系统利用视图及索引实现了数据库信息的快速、可靠的查询。系统能够根据其权限大小,决定其是否有权对查询结果进行浏览或编辑等处理,引导其进行相应的可能的操作。1.4.4 access数据库2. 需求分析及可行性研究2.1 系统分析概况系统分析是指在管理信息系统开发的生命周期中系统分析阶段的各项活动和方法,应用系统思想和系统科学的原理进行分析工作的方法与技术。系统分析阶段的目的,就是按照系统规划所定的某个开发项目范围内明确系统开发的目标和用户的信息需求,提出系统的逻辑方案。系统分析在整个系统开发过程中,是要解决“做什么”的问题,即根据系统规划所确定的范围,对现行系统进行详细调查,尽可能弄清楚用户对信息的需求,调查原信息系统的资源,输入,处理和输出,描述现行系统的业务流程,指出现行系统的局限性和不足之处,确定新系统的基本目标和逻辑功能要求,也即提出新系统的逻辑模型,为下一阶段进行物理方案设计,解决“怎么做”提供依据。因此,这个阶段又称逻辑设计阶段。2.2 系统需求分析需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的。需求分析之所以重要,就因为他具有决策性,方向性,策略性的作用,他在软件开发的过程中具有举足轻重的地位.大家一定要对需求分析具有足够的重视.在一个大型软件系统的开发中,他的作用要远远大于程序设计. 本系统为了能够实现局域网内的即时通信,将整个系统分为两个独立的模块:服务器模块和客户端模块。两个模块独立运行,各自作用。 图2-1需求分析结构图 分析 需求管理 验证 问题获取需求工程 需求开发 编写规格说明2.2.1 功能要求(1)客户端程序启动之后就能看到当前哪些机器在线,哪些可以与之进行对等通信。(2)一旦有某个网内的机器上线了,要有即时通知,并能及时更新用户界面中的用户列表。(3) 聊天界面要人性化,下面是发送框,上面有已有聊天记录,并借助滚动条看到当次所有的聊天记录。(4) 服务器端可以对所有客户端进行监控。(5)实现文件传输的功能。(6)双击列表可以跳出对话框与在线成员进行聊天。2.2.2 性能要求首先,程序的稳定性要得到保证,能够应付各种突发状况,比如网络通信没有连接,用户下线等。对任何突发事件都要有相应的提示,尽量做到人性化。其次,程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。再次,开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。最后,要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的联系,以免维护困难。2.3 系统可行性研究可行性研究的主要目标是:进一步明确系统的目标、规模与功能,对系统开发背景、必要性和意义进行调查分析并根据需要和可能提出开发系统的初步方案与计划。可行性研究是对系统进行全面的分析。通过调查分析,系统设计方案有以下三个可行性:2.3.1 技术可行性本系统采用Windows XP作为操作平台。本系统的应用程序开发平台选用VisualC+6.0,这是目前数据库应用软件的主流开发平台。2.3.2 经济可行性采用本聊天工具本身不需要任何附加硬件设备,功能完全由软件实现,所可以有效的节省资金,减少开支。因为软件对硬件的需求环境不高,所以运行成本不会很高。2.3.3 营运可行性(1)本系统操作简单,界面友好,易于理解,上手容易,营运环境要求低。(2)面对于系统设计还应该以“标准性、安全性、高效性、保密性、可维护性”为标准,在着眼于当前实用的基础上,为将来系统的扩展,升级留有余地。软件的开发应能在较长时间内满足企业或者是学校的发展需要,将来如果有需要的话还可以对软件进行拓展。标准性:系统编写与运行必须符合标准,既可以保证系统运行又可以在此标准上每一项功能运行。可靠性:由于采用了点对点通信,系统相当稳定可靠,避免数据在传输过程中的损失。安全性:由于本系统应用在局域网内,不需要连接外网即可进行通信,不必担心被外界因素所干扰,所以安全性可以得到充分保证。高效性:由于即时传输要求实时性,所以数据传输必须准确、快速,所以系统对信息处理能力响应能力都应是快捷有效的。可维护性:采用结构化模块设计,便于开发与维护,也有利于情况随时进行3. 系统设计及编码实现3.1 系统基础认知3.1.1局域网简介局域网(Local Area Network),简称LAN,是指在某一区域内由多台计算机互联成的计算机组。“某一区域”指的是同一办公室、同一建筑物、同一公司和同一学校等,一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、扫描仪共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。局域网的种类很多,但不管是哪一种局域网都具有以下特点:(1)有限的地理范围(一般在10米到10公里之内);(2)通常多个站共享一个传输介质(同轴电缆、双绞线、光纤);(3)具有较高的数据传播速率,通常为1Mbps20Mbps,高速局城网可达100Mbps;(4)具有较低的时延;(5)具有较低的误码串(一般在千万分之一到百亿分之一间);(6)有限的站数。 局域网种类很多,分类方法也不少。根据数据传输速率可分为局域网和高速局域网。高速局域网般指的是在计算机机房内将主机与一些高速外设和另外的主机相连,其传输速率一般都在50Mbps以上。也可以根据访问方法分类,但最主要的还是按网络拓扑结构进行分类。常用的拓扑结构有总线型、星型、环型和树型。1. 总线型总线型结构的网络特点如下:结构简单,可扩充性好。当需要增加节点时,只需要在总线上增加一个分支接口便可与分支节点相连,当总线负载不允许时还可以扩充总线;使用的电缆少,且安装容易;使用的设备相对简单,可靠性高;维护难,分支节点故障查找难。总线型结构是将网络中的所有设备通过相应的硬件接口直接连接到公共总线上,结点之间按广播方式通信,一个结点发出的信息,总线上的其它结点均可“收听”到。 优点:结构简单、布线容易、可靠性较高,易于扩充,是局域网常采用的拓扑结构。缺点:所有的数据都需经过总线传送,总线成为整个网络的瓶颈;出现故障诊断较为困难。最著名的总线拓扑结构是以太网(Ethernet)。 图3-1总线型结构2. 星型这种结构是目前在局域网中应用得最为普遍的一种,在企业网络中几乎都是采用这一方式。星型网络几乎是Ethernet(以太网)网络专用,它是因网络中的各工作站节点设备通过一个网络集中设备(如集线器或者交换机)连接在一起,各节点呈星状分布而得名。这类网络目前用的最多的传输介质是双绞线,如常见的五类线、超五类双绞线等。这种拓扑结构网络的基本特点主要有如下几点:(1)容易实现:它所采用的传输介质一般都是采用通用的双绞线,这种传输介质相对来说比较便宜,如目前正品五类双绞线每米也仅1.5元左右,而同轴电缆最便宜的也要2.00元左右一米,光缆那更不用说了。这种拓扑结构主要应用于IEEE 802.2、IEEE 802.3标准的以太局域网中;(2)节点扩展、移动方便:节点扩展时只需要从集线器或交换机等集中设备中拉一条线即可,而要移动一个节点只需要把相应节点设备移到新节点即可,而不会像环型网络那样"牵其一而动全局";(3)维护容易;一个节点出现故障不会影响其它节点的连接,可任意拆走故障节点(4)采用广播信息传送方式:任何一个节点发送信息在整个网中的节点都可以收到,这在网络方面存在一定的隐患,但这在局域网中使用影响不大;(5)网络传输数据快:这一点可以从目前最新的1000Mbps到10G以太网接入速度可以看出。 图3-2 星型结构3. 环型这种结构的网络形式主要应用于令牌网中,在这种网络结构中各设备是直接通过电缆来串接的,最后形成一个闭环,整个网络发送的信息就是在这个环中传递,通常把这类网络称之为"令牌环网"。实际上大多数情况下这种拓扑结构的网络不会是所有计算机真的要连接成物理上的环型,一般情况下,环的两端是通过一个阻抗匹配器来实现环的封闭的,因为在实际组网过程中因地理位置的限制不方便真的做到环的两端物理连接。这种拓扑结构的网络主要有如下几个特点:(1)这种网络结构一般仅适用于IEEE 802.5的令牌网(Token ring network),在这种网络中,"令牌"是在环型连接中依次传递。所用的传输介质一般是同轴电缆。(2)这种网络实现也非常简单,投资最小。可以从其网络结构示意图中看出,组成这个网络除了各工作站就是传输介质-同轴电缆,以及一些连接器材,没有价格昂贵的节点集中设备,如集线器和交换机。但也正因为这样,所以这种网络所能实现的功能最为简单,仅能当作一般的文件服务模式;(3)传输速度较快:在令牌网中允许有16Mbps的传输速度,它比普通的10Mbps以太网要快许多。当然随着以太网的广泛应用和以太网技术的发展,以太网的速度也得到了极大提高,目前普遍都能提供100Mbps的网速,远比16Mbps要高。(4)维护困难:从其网络结构可以看到,整个网络各节点间是直接串联,这样任何一个节点出了故障都会造成整个网络的中断、瘫痪,维护起来非常不便。另一方面因为同轴电缆所采用的是插针式的接触方式,所以非常容易造成接触不良,网络中断,而且这样查找起来非常困难,这一点相信维护过这种网络的人都会深有体会。(5)扩展性能差:也是因为它的环型结构,决定了它的扩展性能远不如星型结构的好,如果要新添加或移动节点,就必须中断整个网络,在环的两端作好连接器才能连接。 图3-3 环型结构4. 树型树型结构是分级的集中控制式网络,与星型相比,它的通信线路总长度短,成本较低,节点易于扩充,寻找路径比较方便,但除了叶节点及其相连的线路外,任一节点或其相连的线路故障都会使系统受到影响。树型结构是总线型结构的扩展,它是在总线网上加上分支形成的,其传输介质可有多条分支,但不形成闭合回路;也可以把它看成是星型结构的叠加。树型拓扑以其独特的特点而与众不同,具有层次结构,是一种分层网,网络的最高层是中央处理机,最低层是终端,其他各层可以是多路转换器、集线器或部门用计算机。其结构可以对称,联系固定,具有一定容错能力,一般一个分支和节点的故障不影响另一分支节点的工作,任何一个节点送出的信息都由根接收后重新发送到所有的节点,可以传遍整个传输介质,也是广播式网络。著名的因特网(Internet)也是大多采用树型结构。 树型网的优点: (1) 结构比较简单,成本低。 (2) 网络中任意两个节点之间不产生回路,每个链路都支持双向传输。 (3) 网络中节点扩充方便灵活,寻找链路路径比较方便。 树型网的缺点: (1) 除叶节点及其相连的链路外,任何一个工作站或链路产生故障都会影响整个网络系统的正常运行。 (2) 对根的依赖性太大,如果根发生故障,则全网不能正常工作。因此这种结构的可靠性问题和星型结构相似。 图3-4 树型结构3.1.2 TCP/IP 协议 TCP/IP(Transmission Control Protocol/Internet Protocol的简写,中文译名为传输控制协议/互联网络协议)协议是Internet最基本的协议,简单地说,就是由底层的IP协议和TCP协议组成的。TCP/IP协议的开发工作始于70年代,是用于互联网的第一套协议。1. TCP/IP参考模型 TCP/IP协议的开发研制人员将Internet分为七个层次,以便于理解,它也称为互联网分层模型或互联网分层参考模型,如下图: 图3-5 TCP/IP参考模型结构图物理层:对应于网络的基本硬件,这也是Internet物理构成,即我们可以看得见的硬设备,如PC机、互连网服务器、网络设备等,必须对这些硬设备的电气特性作一个规范,使这些设备都能够互相连接并兼容使用。 数据链路层:它定义了将资料组成正确帧的规程和在网络中传输帧的规程,帧是指一串资料,它是资料在网络中传输的单位。 网络层:本层定义了互联网中传输的“信息包”格式,以及从一个用户通过一个或多个路由器到最终目标的"信息包"转发机制。传输层:为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接。 会话层:提供的服务可使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信,对于传送大的文件极为重要。表示层:是为异种机通信提供一种公共语言,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。应用层:它定义了应用程序使用互联网的规程。 2. 网间协议IP 是英文 Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守 IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”。Internet 上使用的一个关键的底层协议是网际协议,通常称IP协议。我们利用一个共同遵守的通信协议,从而使 Internet 成为一个允许连接不同类型的计算机和不同操作系统的网络。要使两台计算机彼此之间进行通信,必须使两台计算机使用同一种"语言"。通信协议正像两台计算机交换信息所使用的共同语言,它规定了通信双方在通信中所应共同遵守的约定。计算机的通信协议精确地定义了计算机在彼此通信过程的所有细节。例如,每台计算机发送的信息格式和含义,在什么情况下应发送规定的特殊信息,以及接收方的计算机应做出哪些应答等等。网际协议IP协议提供了能适应各种各样网络硬件的灵活性,对底层网络硬件几乎没有任何要求,任何一个网络只要可以从一个地点向另一个地点传送二进制数据,就可以使用IP协议加入 Internet 了。 3. 传输控制协议TCP 尽管计算机通过安装IP软件,从而保证了计算机之间可以发送和接收资料,但IP协议还不能解决资料分组在传输过程中可能出现的问题。因此,若要解决可能出现的问题,连上 Internet 的计算机还需要安装TCP协议来提供可靠的并且无差错的通信服务。TCP协议被称作一种端对端协议。这是因为它为两台计算机之间的连接起了重要作用:当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连接、发送和接收资料以及终止连接。 传输控制协议TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。即使在 Internet 暂时出现堵塞的情况下,TCP也能够保证通信的可靠。 众所周知, Internet 是一个庞大的国际性网络,网络上的拥挤和空闲时间总是交替不定的,加上传送的距离也远近不同,所以传输资料所用时间也会变化不定。TCP协议具有自动调整"超时值"的功能,能很好地适应 Internet 上各种各样的变化,确保传输数值的正确。因此,从上面我们可以了解到:IP协议只保证计算机能发送和接收分组资料,而TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。4. TCP/IP协议TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。它是由ARPANET网的研究机构发展起来的。综上所述,虽然IP和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。只有两者的结合,才能保证 Internet 在复杂的环境下正常运行。凡是要连接到 Internet 的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称作TCP/IP协议。综上所述,虽然IP和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。只有两者的结合,才能保证 Internet 在复杂的环境下正常运行。凡是要连接到 Internet 的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称作TCP/IP协议。3.1.3Windows SocketsWindows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。Windows Sockets规范以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套microsoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口.应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。最常用的范例便是客户机/服务器模型。在这种方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。这一套惯例包含了一套协议。它必须在通讯的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称的。在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。一个对称协议的例子是Internet中用于终端仿真的TELNET。而非对称协议的例子是Internet中的FTP。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在"客户进程"和"服务进程"。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务对客户的请求作出适当的反应。在一次网络通信/连接中有以下几个参数需要被设置:本地IP地址 - 本地端口号 - 对方端口号 - 对方IP地址。左边两部分称为一个半关联,当与右边两部分建立连接后就称为一个全关联。在这个全关联的套接口上可以双向的交换数据。如果是使用无连接的通信则只需要建立一个半关联,在发送和接收时指明另一半的参数就可以了,所以可以说无连接的通信是将数据发送到另一台主机的指定端口。此外不论是有连接还是无连接的通信都不需要双方的端口号相同。3.2 体系结构设计常用的计算机体系结构包括B/S和C/S架构。1. B/S结构(Browser/Server结构)即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。 B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如证书)后,不需要人的参与,系统可以自动分配给用户一个账号进