C++网络编程高级编程_第1页
C++网络编程高级编程_第2页
C++网络编程高级编程_第3页
C++网络编程高级编程_第4页
C++网络编程高级编程_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

第15章网络编程《C++高级编程》本章主要教学内容简略介绍网络的根本知识、功能及协议。客户机/效劳器的网络模型及其原理。网络应用程序的编写:客户端应用程序、效劳器端应用程序、浏览器程序、电子邮件发送程序。15.1网络概述计算机网络:地理位置不同、具有独立功能的多个计算机系统,通过通信设备和线路互相连接起来,使用功能完整的网络软件来实现网络资源共享的大系统,称为计算机网络。计算机网络从结构上可以分乘两局部:资源子网和通信子网。计算机网络的组成:15.1网络概述计算机网络组成示意图15.1网络概述计算机网络结构示意图资源子网:负责全网的数据处理以及向网络用户提供网络资源及网络效劳等。一般由主计算机系统、终端、各种硬件和软件资源和数据资源等组成。通信子网:为资源子网提供信息传送效劳,是支持资源子网上用户之间相互通信的根本环境。一般由通信控制器、集线器、调制解调器、网络通信媒体等组成。15.1网络概述计算机网络的分类:

按网络覆盖的地理范围可分为:–局域网LAN〔localareanetwork〕–城域网MAN〔metropolitanareanetwork〕–广域网WAN〔wideareanetwork〕15.1网络概述其它分类有:按交换方式、按传输媒体等分类按网络拓扑结构可分为:–星型网络–总线型网络–环型网络

-网格型网络15.1网络概述计算机网络功能主要有:–数据通信–资源共享:共享硬件、软件、信息和知识等–分布式数据处理,提高可靠性15.1网络概述计算机网络的体系结构有两大类:对等网络和基于效劳器的网络对等网络的特点:①在对等网络中,没有专用的效劳器,网上所有的计算机地位是平等的;②网上所有计算机都既是客户机又是效劳器;③每台计算机的用户自己决定将其计算机中的哪些数据共享到网络中去;④没有负责整个网络管理的网络管理员;15.1网络概述对等网络的优点:–规模小,本钱低,实现简单15.1网络概述基于效劳器的网络的特点:①网络中有专用效劳器〔或主机〕②网络中有客户机〔或终端〕③有网络操作系统和网络管理员对网络进行统一管理基于效劳器的网络的优点:①易于管理共享资源②平安性好③数据备份方便④网络规模根本不受限制15.1网络概述15.1网络概述基于效劳器的网络结构又分为:Client/Server结构〔胖客户机〕Browser/Server结构〔瘦客户机〕。效劳器Server:一台能够提供和管理可共享资源的计算机。客户机Client:能够使用效劳器上的可共享资源的计算机。Client/Server〔客户机/效劳器〕结构15.1网络概述效劳器需要运行某一种网络操作系统,例如WindowsServer2003、NovellNetware、Unix等。通常有多台客户机连接到同一台效劳器上,它们除了能运行自己的应用程序外,还可以通过网络获得效劳器的效劳。在这种以效劳器为中心的网络中,一旦效劳器出现故障或者被关闭,整个网络将无法正常运行。15.1网络概述15.1.1客户机/效劳器模型客户机/效劳器模型的工作原理:请求通信设施请求响应客户端效劳器端15.1.1客户机/效劳器模型采用客户机/效劳器模型的原因:不对等现象的存在:效劳器端有丰富的资源,强大的运算能力,可存放大量的资源和信息。而客户端在软硬件的配置上相对薄弱,不可能也没有必要在每一台客户机上存放大量资源。为节约资源,提高利用率和使用效率,让效劳器上的资源公有,让多个客户端共享这些资源。(2)异步性客户机/效劳器模式可以很好地支持异步性操作,方便远程通信的实现。15.1.1客户机/效劳器模型15.1.2网络协议通俗地说,网络协议就是网络之间沟通、交流的桥梁,只有相同网络协议的计算机才能进行信息的沟通与交流。这就好比人与人之间交流所使用的各种语言一样,只有使用相同语言才能正常、顺利地进行交流。从专业角度定义,网络协议是计算机在网络中实现通信时必须遵守的约定,也就是通信协议。主要是对信息传输的速率、传输代码、代码结构、传输控制步骤、出错控制等作出规定并制定出标准。。1、什么是网络协议?15.1.2网络协议1984年,国际标准组织ISO公布了一个作为未来网络协议指南的模型,该模型被称为开放系统互联模型OSI。虽然完全遵守OSI的网络产品并没有成为网络市场上的标准,但OSI还是可以提供一个概念上和功能上的框架,可以作为学习网络知识的依据,作为网路实现的参考。2、ISO/OSI参考模型15.1.2网络协议OSI参考模型采用分层结构,将所有互联的开放系统划分为功能上相对独立的七层,从最根本的物理连接到最高层次的应用。关于OSI参考模型的详细知识见附带文件1。15.1.2网络协议虽然OSI参考模型的实际应用意义不是很大,但它对于理解网络协议内部的运作确实很有帮助,也为我们学习网络协议提供了一个很好的参考。在现实网络世界里,TCP/IP协议栈获得了更为广泛的应用。

TCP/IP协议(TransmissionControlProtocol/InternetProtocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的根底。

15.1.2网络协议3、TCP/IP协议模型TCP/IP协议是70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为根底组建的INTERNET是目前国际上规模最大的计算机网络,正因为INTERNET的广泛使用,使得TCP/IP成了事实上的标准。15.1.2网络协议TCP/IP是网络中使用的根本的通信协议。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。

关于TCP/IP协议的根底知识见附带文件1。15.1.2网络协议15.1.2网络协议3、UDP协议UserDataProtocol用户数据报协议UDP与TCP/IP的差异:UDP直接利用IP协议进行UDP数据报的传输。UDP提供的是无连接的、不可靠的数据报投递效劳。UDP常用于数据量少的数据传输,当使用UDP协议传输信息流时,用户负责解决排序、过失确认等问题。网络编程方法15.2网络应用程序编写

网络编程的概述SocketWinSocketRPC命名管道邮箱1.什么是Socket?

网络编程的概述一、Socket套接字〔Socket〕最初是由加利福尼亚大学Berkeley分校为UNIX操作系统开发的网络通信接口。20世纪80年代初,加利福尼亚大学Berkeley将美国国防部高研署提供的TCP/IP集成到Unix中,并很快开发了TCP/IP应用程序接口(API),即Socket(套接字)接口。随着UNIX操作系统的广泛使用,套接字成为当前最流行的网络通信应用程序接口之一。

网络编程的概述90年代初,由SunMicrosystems,JSBCorporation,FTPsoftware,Microdyne和Microsoft等几家公司共同制定了一套标准,即WindowsSockets标准。它是BerkeleySockets的重要扩充,主要表达在它增加了一些异步函数和符合Windows消息驱动特性的网络事件异步选择机制。WindowsSockets标准是一套开放的、支持多种协议的Windows下的网络编程接口。目前实际应用中的WindowsSockets标准主要有1.1版和2.0版,其中1.1版只支持TCP/IP协议,而2.0版支持多协议,并具有良好的向后兼容性。

网络编程的概述

Socket实际上是指一个通信端点,借助于它,用户所开发的Socket应用程序,可以通过网络与其它Socket应用程序进行通信。套接字sockets是支持TCP/IP协议的网络通信的根本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点。它构成了在单个主机内及整个网际间的编程界面。

网络编程的概述一般来说,跨机应用进程之间要在网络环境下进行通信,必须要在网络的每一端都要建立一个套接字,两个套接字之间可以是建立连接的,也可以是无连接的,并通过对套接字的“读”、“写”操作实现网络通信功能。像文件那样有翻开、读、写、关闭的方式。

网络编程的概述2.套接字Socket的分类根据传输数据类型的不同,套按字可分为面向连接的字节流套接字〔streamsockets〕

和面向无连接的数据报套接字〔datagramsockets〕两种类型。

网络编程的概述

提供没有记录边界的数据流,字节流不按记录定界:可以是双向的字节流〔应用程序是全双工:可以通过套接字同时传输和接收〕。可依赖流传递有序的、不重复的数据。〔“有序”指数据包按发送顺序送达。“不重复”指一个特定的数据包只能获取一次。〕这能确保收到流消息,而流非常适合处理大量数据。1)字节流套接字

网络编程的概述在TCP/IP协议簇中对应TCP协议。通信端点使用TCP对应的INTERNET地址互相连接,可保证按正确的顺序以及单一和可靠的地址传输数据。包长没有限制,信包的传输也不重复。

网络编程的概述2)数据报套接字数据报套接字支持双向数据流,此数据流不能保证按顺序和不重复送达。在TCP/IP协议簇中对应UDP协议。通信端点使用UDP对应的INTERNET地址。不能保证所有数据都准确有序地到达目的地。不保证顺序性、可靠性和无重复性。

网络编程的概述利用数据报效劳可实现一些简单的网络效劳,如网点检测程序PING。由于不建立连接,数据报协议的连接比字节流协议快。双方不需要互连,按固定的最大长度进行传输,因而适用于单个报文传输,或较小文件的传输。

网络编程的概述3.套接字Socket的编程要点和过程不管是哪种套接字编程,采用的都是客户机/效劳器方式,其运作过程根本类似。字节流套接字的效劳进程和客户进程,在通信前必须创立各自的套接字以建立连接,然后对相应的套接字进行“读”、“写”操作,实现信息的交换。

网络编程的概述1)效劳器进程创立套接字①效劳进程总是先于客户进程启动,效劳进程首先调用socket()函数创立自已端的一个字节流套接字,并提供三个参数:网络地址类型,一般取AF_INEF;套接字类型,这里取SOCK_STREAM;网络协议,缺省为TCP/IP协议,对应参数为0。

网络编程的概述②给套接字地址变量赋初值。在生成套接字后,要用效劳器的地址先对sockaddr_in结构变量赋初值。sockaddr_in在/usr/include/netinet/in.h中有定义,它只适用于INTERNET地址类型,含有INTERNET套接字地址类型、IP端口号、IP地址等信息。地址类型可取定为AF_INET,IP地址对效劳器可取任意合法地址INADDR_ANY。IP端口号可由用户设定,但要注意主机字节顺序向网络字节顺序的转换。

网络编程的概述③给套接字命名。由socket()函数创立的套接字是没有名字的。所谓命名,就是用bind()函数将效劳器地址捆绑到创立的套接字上。④效劳器进程准备接受来自客户机的连接请求。首先调用listen()函数,让效劳器进程进入监听状态;然后调用accept()函数,准备接受客户机的连接信号。无连接请求时,效劳进程被阻塞。

网络编程的概述2)客户进程调用socket()函数创立自己端的套接字①给客户端的sockaddr_in结构体变量赋值。地址类型仍可取AF_INET,端口号和效劳器方的端口号相同,欲连效劳器的地址通过调用inet_addr()转换得到。也可通过gethostbyname()函数将名字转换为指向hostent结构变量的指针,再将hostent结构变量的地址成员用bcopy()复制到sockaddr_in结构变量上。

网络编程的概述②客户方调用connect()函数向效劳进程发出连接请求。3〕当连接请求到来后,被阻塞效劳进程的accpet()函数生成一个新的字节流套接字,并返回客户机的sockaddr_in结构变量,从而在效劳器应用程序中用新的被赋予客户机地址的套接字同客户进程进行连接,然后向客户方返回接受信号。

网络编程的概述4〕一旦客户机的套接字收到来自效劳器的接受信号,那么表示客户机与效劳器双方已实现连接。任一方均可向对方发送,也可接收对方发来的数据。这既可通过send()、recv()函数来实现。也可通过read()、write()函数来交换数据。

网络编程的概述5〕效劳进程和客户进程可通过调用shutdown()和colse()关闭套接字上的所有发送和接收操作,撤销套接字并中断连接。整个运作过程用图表示如下:WinSocket同时支持字节流套接字和数据报套接字。面向连接的字节流套接字的时序图见图6-3;面向无连接的数据报套接字的时序图见图6-4。

网络编程的概述4.

WinSocket1)Creat功能:建立套接字。函数原型及参数说明:P149-150

网络编程的概述5.

MFC的CSocket类2)Bind功能:建立套接字端口与网络地址连接起来。函数原型及参数说明:P150

网络编程的概述3)Listen功能:等待Socket请求。函数原型及参数说明:P149-1504)Accept功能:取得对列上的第一个连接请求,并建立一个具有与Socket相同特性的套接字。函数原型及参数说明:P150

网络编程的概述5)Connect功能:向效劳器提出一个连接请求。函数原型及参数说明:P1506)Receive功能:从已连接的客户端或效劳器端接收数据。函数原型及参数说明:P150-151

网络编程的概述7)Send功能:发送数据到已连接的客户端或效劳器端。函数原型及参数说明:P1518)其他函数:AttachDetachGetLastErrorShutDownOnAcceptCloseIsBlockingFromHandleCancelBlockingCall

1)利用CSocketFile类和Archive类实现。

网络编程的概述15.利用CSocket类直接进行数据通信的两种方式

2)利用CSocket类的成员函数Receive、Send、ReceiveFrom、Sendto、Listen、Accept等实现。

网络编程的概述方法2)的实现步骤:效劳器端:Construct->Create->Bind->Listen->Accept->Send->Close客户机端:Construct->Create->Connect->Receive->Close1.创立应用程序的根本框架

客户机端的编程实例2.修改资源3.增加一个类4.实现网络功能5.几个重要函数的详细代码效劳器端的编程实例1.创立应用程序的根本框架2.修改资源3.增加两个类4.实现网络功能5.相关函数的实现浏览器和MAPI的编程实例1.浏览器的编程实例URL:统一资源定位符(UniformResourceLocator)URL是统一的,因为它们采用相同的根本语法,无论寻址哪种特定类型的资源〔网页、新闻组〕或描述通过哪种机制获取该资源。对于Intranet效劳器或万维网效劳器上的目标文件,可以使用“统一资源定位符(URL)”地址〔该地址以“://”开始〕。例如,为Microsoft网站的万维网URL地址。浏览器和MAPI的编程实例URL的一般格式为:

scheme://host:port/path?query#fragment

例如:://imailtone:80/WebApplication1/WebForm1.aspx?name=tom&;amp;age=20#resume

scheme浏览器和MAPI的编程实例host,主机,指定的效劳器的域名系统(DNS)主机名或IP地址。

port,端口号,整数,可选,省略时使用方案的默认端口,如的默认端口为80。path,路径,由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。浏览器和MAPI的编程实例query,查询,可选,用于给动态网页〔如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页〕传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

fragment,信息片断,字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。浏览器和MAPI的编程实例MAPI:

MessagingApplicationProgrammingInterface2.MAPI的编程实例浏览器和MAPI的编程实例

MAPI是一种消息体系结构,可以使多个系统进行信息交换,也可以发送和接收电子邮件。MAPI可以在不同的操作系统上进行通信,也可以在多个硬件平台之间实现跨越。浏览器和MAPI的编程实例微软和其它一些公司开发了MAPI,可使Windows应用程序接入到从MicrosoftMail到NovellMHS的多种消息系统。但是,MAPI仅限于在日常工作的水平上工作,即感知邮件的应用程序,它可在网络上交换邮件与数据。

VisualC++中的CDocument类提供了对MAPI的支持。但只提供发送消息和文件的功能,其他功能如检索等还没有实现。发送消息和文件的功能是通过使用OnFileSendMail()函数和对应的用户接口处理函数OnUpdateFileSendMail()函数实现的。浏览器和MAPI的编程实例15.3DHTMLDHTML:DynamicHyperTextMarkupLanguage

动态超文本标记语言很多网页〔如新浪〕上有一个重要界面特性——当浏览者将鼠标指针移动到页面导航条上时,会动态地弹出一个菜单,在该菜单中移动鼠标,所指向的菜单项变为红色显示;如果将鼠标指针移出菜单所在范围,那么菜单自动隐藏:如果将鼠标指针移动到导航条上另外一个区域,那么会弹出另外一个菜单。15.3DHTML这种效果非常类似于Windows应用程序的特性,即通过图形化的界面为用户提供尽可能多的功能。实际上,采用这种方式可以使同一个页面上包含更多的信息,对于庞大的网络站点来说十分有用。要实现这种效果,单纯依靠HTML和JavaScript已经无法实现,必须采用新的技术——这就是动态HTML。所谓动态HTML(DynamicHTML,简称DHTML),其实并不是一门新的语言,它只是HTML、CSS和客户端脚本的一种集成。15.3DHTML使用DHTML技术,可使网页设计者创立出能够与用户交互并包含动态内容的页面。实际上,DHTML使网页设计者可以动态操纵网页上的所有元素——甚至是在这些页面被装载以后。利用DHTML,网页设计者可以动态地隐藏或显示内容、修改样式定义、激活元素以及为元素定位。DHTML还可使网页设计者在网页上显示外部信息,方法是将元素捆绑到外部数据源(如文件和数据库)上。15.3DHTML可见,DHTML技术是一种非常实用的网页设计技术。实际上,DHTML早已广泛地应用到了各类大大小小的网站中,成为高水平网页必不可少的组成局部。所有这些功能均可用浏览器完成而无需请求Web效劳器,同时也无需重新装载网页。这是因为一切功能都包含在HTML文件中,随着对网页的请求而一次性下载到浏览器端。15.3DHTML一、是HTML,也就是页面中的各种页面元素对象,它们是被动态操纵的内容;

二、是CSS,CSS属性也是动态操纵的内容,从而获得动态的格式效果;

三、是客户端脚本(例如JavaScript),它实际操纵Web页上的HTML和CSS。DHTML建立在原有技术的根底上,可分为三个方面:15.3DHTMLCSS就是一种叫做样式表〔stylesheet〕的技术。也有的人称之为层叠样式表〔CascadingStylesheet〕。在主页制作时采用CSS技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改,就可以改变同一页面的不同局部,或者页数不同的网页的

外观和格式。什么是CSS?DHTML对象模型什么是HTML?HTML〔HyperTextMark-upLanguage〕即超文本标记语言,是WWW的描述语言。设计HTML语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起,形成有机的整体,人们不用考虑具体信息是在当前电脑上还是在网络的其它电脑上。我们只需使用鼠标在某一文档中点取一个图标,Internet就会马上转到与此图标相关的内容上去,而这些信息可能存放在网络的另一台电脑中。DHTML对象模型HTML的结构包括头部〔Head〕、主体〔Body〕两大局部,其中头部描述浏览器所需的信息,而主体那么包含所要说明的具体内容。HTML是一种ASCII标记语言的格式。HTML根本代码见P166。HTML只不过是组合成一个文本文件的一系列标签。HTML标签通常是英文词汇的全称〔如块引用:blockquote〕或缩略语〔如“p”代表Paragragh〕。但它们的与一般文本有区别,因为它们放在单书名号里。故Paragragh标签是<p>,块引用标签是<blockquote>。有些标签说明页面如何被格式化〔例如,<p>开始一

温馨提示

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

评论

0/150

提交评论