C课件第15章网络编程.ppt_第1页
C课件第15章网络编程.ppt_第2页
C课件第15章网络编程.ppt_第3页
C课件第15章网络编程.ppt_第4页
C课件第15章网络编程.ppt_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

第15章 网络编程 C+高级编程 本章主要教学内容 l 简略介绍网络的基本知识、功能及协议。 l 客户机/服务器的网络模型及其原理。 l 网络应用程序的编写:客户端应用程序、 服务器端应用程序、浏览器程序、电子邮件 发送程序。 15.1 网络概述 计算机网络: 地理位置不同、具有独立功能的多个计算机系 统,通过通信设备和线路互相连接起来,使用功能 完整的网络软件来实现网络资源共享的大系统,称 为计算机网络。 计算机网络从结构上可以分乘两部分:资源子 网和通信子网。 计算机网络的组成: 15.1 网络概述 计算机网络组成示意图 15.1 网络概述 计算机网络结构示意图 资源子网:负责全网的数据处理以及向网络用户 提供网络资源及网络服务等。一般由主计算机系统、 终端、各种硬件和软件资源和数据资源等组成。 通信子网:为资源子网提供信息传送服务,是支 持资源子网上用户之间相互通信的基本环境。一般由 通信控制器、集线器、调制解调器、网络通信媒体等 组成。 15.1 网络概述 计算机网络的分类: 按网络覆盖的地理范围可分为: 局域网LAN(local area network) 城域网 MAN(metropolitan area network) 广域网WAN(wide area network) 15.1 网络概述 其它分类有:按交换方式、按传输媒体等分类 按网络拓扑结构可分为: 星型网络 总线型网络 环型网络 -网格型网络 15.1 网络概述 计算机网络功能主要有: 数据通信 资源共享:共享硬件、软件、信息和知识等 分布式数据处理,提高可靠性 15.1 网络概述 计算机网络的体系结构有两大类: 对等网络和基于服务器的网络 对等网络的特点: 在对等网络中,没有专用的服务器,网上所有 的计算机地位是平等的; 网上所有计算机都既是客户机又是服务器; 每台计算机的用户自己决定将其计算机中的哪 些数据共享到网络中去; 没有负责整个网络管理的网络管理员; 15.1 网络概述 对等网络的优点: 规模小,成本低,实现简单 15.1 网络概述 基于服务器的网络的特点: 网络中有专用服务器(或主机) 网络中有客户机(或终端) 有网络操作系统和网络管理员对网络进行统一管理 基于服务器的网络的优点: 易于管理共享资源 安全性好 数据备份方便 网络规模基本不受限制 15.1 网络概述 15.1 网络概述 基于服务器的网络结构又分为: Client/Server结构(胖客户机) Browser/Server结构(瘦客户机)。 服务器Server:一台能够提供和管理可共享资源的 计算机。 客户机Client:能够使用服务器上的可共享资源的 计算机。 Client/Server(客户机/服务器)结构 15.1 网络概述 服务器需要运行某一种网络操作系统,例如 Windows Server 2003、Novell Netware、Unix等。 通常有多台客户机连接到同一台服务器上,它 们除了能运行自己的应用程序外,还可以通过网络 获得服务器的服务。 在这种以服务器为中心的网络中,一旦服务器 出现故障或者被关闭,整个网络将无法正常运行。 15.1 网络概述 15.1.1 客户机/服务器模型 客户机/服务器模型的工作原理: 请求 通信设施 请求 响应 客户端 服务器端 15.1.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协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际 协议,又叫网络通讯协议,这个协议是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协议 User Data Protocol用户数据报协议 UDP与TCP/IP的差异: lUDP直接利用IP协议进行UDP数据报的传输。 lUDP提供的是无连接的、不可靠的数据报投递服务。 lUDP常用于数据量少的数据传输, l当使用UDP协议传输信息流时,用户负责解决排序、 差错确认等问题。 网络编程方法 15.2 网络应用程序编写 15.2.1 网络编程的概 述 Socket WinSocket RPC 命名管道邮箱 1.什么是Socket? 15.2.1 网络编程的概述 一、 Socket 套接字(Socket)最初是由加利福尼亚大学 Berkeley分校为UNIX操作系统开发的网络通信接口。20 世纪80年代初,加利福尼亚大学Berkeley将美国国防部 高研署提供的TCP/IP集成到Unix中,并很快开发了 TCP/IP应用程序接口(API),即Socket(套接字)接口。 随着UNIX操作系统的广泛使用,套接字成为当前最流行 的网络通信应用程序接口之一。 15.2.1 网络编程的概述 90年代初,由Sun Microsystems,JSB Corporation ,FTP software,Microdyne和Microsoft等几家公司共同 制定了一套标准,即Windows Sockets规范。它是 Berkeley Sockets的重要扩充,主要体现在它增加了一些 异步函数和符合Windows消息驱动特性的网络事件异步选 择机制。Windows Sockets规范是一套开放的、支持多种 协议的Windows下的网络编程接口。目前实际应用中的 Windows Sockets规范主要有1.1版和2.0版,其中1.1版只 支持TCP/IP协议,而2.0版支持多协议,并具有良好的向 后兼容性。 15.2.1 网络编程的概述 Socket实际上是指一个通信端点,借助于它, 用户所开发的Socket应用程序,可以通过网络与其 它Socket应用程序进行通信。 套接字sockets是支持TCP/IP协议的网络通信的 基本操作单元。可以将套接字看作不同主机间的进 程进行双向通信的端点。它构成了在单个主机内及 整个网际间的编程界面。 15.2.1 网络编程的概述 一般来说,跨机应用进程之间要在网络环境下 进行通信,必须要在网络的每一端都要建立一个套 接字,两个套接字之间可以是建立连接的,也可以 是无连接的,并通过对套接字的“读”、“写”操 作实现网络通信功能。像文件那样有打开、读、写 、关闭的方式。 15.2.1 网络编程的概 述 2. 套接字Socket的分类 根据传输数据类型的不同,套按字可分为面 向连接的字节流套接字(stream sockets) 和面向无连接的数据报套接字(datagram sockets)两种类型。 15.2.1 网络编程的概述 l 提供没有记录边界的数据流,字节流不按记录 定界:可以是双向的字节流(应用程序是全双工: 可以通过套接字同时传输和接收)。可依赖流传递 有序的、不重复的数据。(“有序”指数据包按发 送顺序送达。“不重复”指一个特定的数据包只能 获取一次。)这能确保收到流消息,而流非常适合 处理大量数据。 1)字节流套接字 15.2.1 网络编程的概述 l 在TCP/IP协议簇中对应TCP协议。 l通信端点使用TCP对应的INTERNET地址互相连接,可 保证按正确的顺序以及单一和可靠的地址传输数据。 l包长没有限制,信包的传输也不重复。 15.2.1 网络编程的概 述 2)数据报套接字 l 数据报套接字支持双向数据流,此数据流不能 保证按顺序和不重复送达。 l 在TCP/IP协议簇中对应UDP协议。 l 通信端点使用UDP对应的INTERNET地址。不能保 证所有数据都准确有序地到达目的地。不保证顺 序性、可靠性和无重复性。 15.2.1 网络编程的概述 l 利用数据报服务可实现一些简单的网络服务,如 网点检测程序PING。由于不建立连接,数据报协议 的连接比字节流协议快。 l 双方不需要互连,按固定的最大长度进行传输, 因而适用于单个报文传输,或较小文件的传输。 15.2.1 网络编程的概述 3. 套接字Socket的编程要点和过程 不论是哪种套接字编程,采用的都是客户机/ 服务器方式,其运作过程基本类似。 字节流套接字的服务进程和客户进程,在通信 前必须创建各自的套接字以建立连接,然后对相应 的套接字进行“读”、“写”操作,实现信息的交 换。 15.2.1 网络编程的概述 1)服务器进程创建套接字 服务进程总是先于客户进程启动,服务进程首 先调用socket()函数创建自已端的一个字节流套接字, 并提供三个参数: 网络地址类型,一般取AF_INEF; 套接字类型,这里取SOCK_STREAM; 网络协议,缺省为TCP/IP协议,对应参数为0。 15.2.1 网络编程的概述 给套接字地址变量赋初值。 在生成套接字后,要用服务器的地址先对 sockaddr_in结构变量赋初值。sockaddr_in在 /usr/include/netinet/in.h中有定义,它只适用于 INTERNET地址类型,含有INTERNET套接字地址类型、 IP端口号、IP地址等信息。地址类型可取定为AF_INET ,IP地址对服务器可取任意合法地址 INADDR_ANY。IP 端口号可由用户设定,但要注意主机字节顺序向网络 字节顺序的转换。 15.2.1 网络编程的概述 给套接字命名。由socket()函数创建的套接字是 没有名字的。所谓命名,就是用bind()函数将服务 器地址捆绑到创建的套接字上。 服务器进程准备接受来自客户机的连接请求。首先 调用listen()函数,让服务器进程进入监听状态;然 后调用 accept()函数,准备接受客户机的连接信号 。无连接请求时,服务进程被阻塞。 15.2.1 网络编程的概述 2)客户进程调用socket( )函数创建自己端的套接字 给客户端的sockaddr_in结构体变量赋值。地址类型 仍可取AF_INET,端口号和服务器方的端口号相同,欲 连服务器的地址通过调用inet_addr()转换得到。也可 通过gethostbyname()函数将名字转换为指向hostent 结构变量的指针,再将hostent结构变量的地址成员用 bcopy()复制到sockaddr_in结构变量上。 15.2.1 网络编程的概述 客户方调用connect()函数向服务进程发出连 接请求。 3)当连接请求到来后,被阻塞服务进程的accpet() 函数生成一个新的字节流套接字,并返回客户机的 sockaddr_in结构变量,从而在服务器应用程序中用 新的被赋予客户机地址的套接字同客户进程进行连接 ,然后向客户方返回接受信号。 15.2.1 网络编程的概述 4)一旦客户机的套接字收到来自服务器的接受信 号,则表示客户机与服务器双方已实现连接。任一 方均可向对方发送,也可接收对方发来的数据。这 既可通过send()、recv()函数来实现。也可通过 read()、write()函数来交换数据。 15.2.1 网络编程的概述 5)服务进程和客户进程可通过调用shutdown()和 colse()关闭套接字上的所有发送和接收操作,撤销 套接字并中断连接。 整个运作过程用图表示如下: WinSocket同时支持字节流套接字和数据报套接字。 面向连接的字节流套接字的时序图见图6-3; 面向无连接的数据报套接字的时序图见图6-4。 15.2.1 网络编程的概述 4. WinSocket 1)Creat 功能:建立套接字。 函数原型及参数说明:P149-150 15.2.1 网络编程的概述 5. MFC的CSocket类 2)Bind 功能:建立套接字端口与网络地址连接起来。 函数原型及参数说明:P150 15.2.1 网络编程的概述 3)Listen 功能:等待Socket请求。 函数原型及参数说明:P149-150 4)Accept 功能:取得对列上的第一个连接 请求,并建立一个具有与Socket相同特性的套 接字。 函数原型及参数说明:P150 15.2.1 网络编程的概述 5)Connect 功能:向服务器提出一个连接请求。 函数原型及参数说明:P150 6)Receive 功能:从已连接的客户端或服 务器端接收数据。 函数原型及参数说明:P150151 15.2.1 网络编程的概 述 7)Send 功能:发送数据到已连接的客户端 或服务器端。 函数原型及参数说明:P151 8)其他函数:Attach Detach GetLastError ShutDown OnAccept Close IsBlocking FromHandle CancelBlockingCall 1)利用CSocketFile类和Archive类实现。 15.2.1 网络编程的概述 15. 利用CSocket类直接进行数据通信的两种方式 2)利用CSocket类的成员函数Receive、Send、 ReceiveFrom、Sendto、Listen、Accept等实现。 15.2.1 网络编程的概述 方法2)的实现步骤: 服务器端:Construct-Create-Bind-Listen -Accept-Send-Close 客户机端:Construct-Create-Connect-Receive -Close .创建应用程序的基本框架 15.2.2 客户机端的编程实例 .修改资源 .增加一个类 .实现网络功能 .几个重要函数的详细代码 15.2.3 服务器端的编程实例 . 创建应用程序的基本框架 . 修改资源 . 增加两个类 . 实现网络功能 .相关函数的实现 15.2.4 浏览器和MAPI的编程实例 1. 浏览器的编程实例 URL:统一资源定位符 (Uniform Resource Locator) URL是统一的,因为它们采用相同的基本语法, 无论寻址哪种特定类型的资源(网页、新闻组)或 描述通过哪种机制获取该资源。 对于Intranet服务器或万维网服务器上的目 标文件,可以使用“统一资源定位符 (URL)”地 址(该地址以“http:/”开始)。 例如,/ 为 Microsoft 网站的万维网 URL 地址。 15.2.4 浏览器和MAPI的编程实例 URL的一般格式为: scheme:/host:port/path?query#fragment 例如: :80/WebApplication1/W ebForm1.aspx?name=tom&;amp;age=20#resume scheme 15.2.4 浏览器和MAPI的编程实例 host,主机,指定的服务器的域名系统(DNS)主机名 或 IP 地址。 port,端口号,整数,可选,省略时使用方案的默 认端口,如http的默认端口为80。 path,路径,由零或多个“/”符号隔开的字符串, 一般用来表示主机上的一个目录或文件地址。 15.2.4 浏览器和MAPI的编程实例 query,查询,可选,用于给动态网页(如使用CGI 、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页 )传递参数,可有多个参数,用“”符号隔 开,每个参数的名和值用“=”符号隔开。 fragment,信息片断,字符串,用于指定网络资源 中的片断。例如一个网页中有多个名词解释,可使 用fragment直接定位到某一名词解释。 15.2.4 浏览器和MAPI的编程实例 MAPI: Messaging Application Programming Interface . MAPI的编程实例 15.2.4 浏览器和MAPI的编程实例 MAPI是一种消息体系结构,可以使多个系统 进行信息交换,也可以发送和接收电子邮件。 MAPI可以在不同的操作系统上进行通信,也可以 在多个硬件平台之间实现跨越。 15.2.4 浏览器和MAPI的编程实例 微软和其它一些公司开发了MAPI,可使Windows 应用程序接入到从Microsoft Mail 到Novell MHS的 多种消息系统。但是, MAPI仅限于在日常工作的水 平上工作,即感知邮件的应用程序,它可在网络上 交换邮件与数据。 Visual C+中的CDocument类提供了对MAPI的支 持。但只提供发送消息和文件的功能,其他功能如 检索等还没有实现。 发送消息和文件的功能是通过使用 OnFileSendMail( )函数和对应的用户接口处理函数 OnUpdateFileSendMail( )函数实现的。 15.2.4 浏览器和MAPI的编程实例 15.3 DHTML DHTML:Dynamic HyperText Markup Language 动态超文本标记语言 很多网页(如新浪)上有一个重要界面特性当 浏览者将鼠标指针移动到页面导航条上时,会动态地弹 出一个菜单,在该菜单中移动鼠标,所指向的菜单项变 为红色显示;如果将鼠标指针移出菜单所在范围,则菜 单自动隐藏:如果将鼠标指针移动到导航条上另外一个 区域,则会弹出另外一个菜单。 15.3 DHTML 这种效果非常类似于Windows应用程序的特性,即通 过图形化的界面为用户提供尽可能多的功能。实际上, 采用这种方式可以使同一个页面上包含更多的信息,对 于庞大的网络站点来说十分有用。 要实现这种效果,单纯依靠HTML和JavaScript已经 无法实现,必须采用新的技术这就是动态HTML。所 谓动态HTML(Dynamic HTML,简称DHTML),其实并不是 一门新的语言,它只是HTML、CSS和客户端脚本的一种 集成。 15.3 DHTML 使用DHTML技术,可使网页设计者创建出能够与 用户交互并包含动态内容的页面。实际上,DHTML使 网页设计者可以动态操纵网页上的所有元素甚 至是在这些页面被装载以后。利用DHTML,网页设计 者可以动态地隐藏或显示内容、修改样式定义、激 活元素以及为元素定位。DHTML还可使网页设计者在 网页上显示外部信息,方法是将元素捆绑到外部数 据源(如文件和数据库)上。 15.3 DHTML 可见,DHTML技术是一种非常实用的网页设计技术 。实际上,DHTML早已广泛地应用到了各类大大小小的 网站中,成为高水平网页必不可少的组成部分。 所有这些功能均可用浏览器完成而无需请求Web 服务器,同时也无需重新装载网页。这是因为一切 功能都包含在HTML文件中,随着对网页的请求而一 次性下载到浏览器端。 15.3 DHTML 一、是HTML,也就是页面中的各种页面元素对象, 它们是被动态操纵的内容; 二、是CSS,CSS属性也是动态操纵的内容,从而获 得动态的格式效果; 三、是客户端脚本(例如JavaScript),它实际操纵 Web页上的HTML和CSS。 DHTML建立在原有技术的基础上,可分为三个方面: 15.3 DHTML CSS就是一种叫做样式表(stylesheet)的技 术。也有的人称之为层叠样式表(Cascading Stylesheet)。 在主页制作时采用CSS技术,可以 有效地对页面的布局、字体、颜色、背景和其它效 果实现更加精确的控制。 只要对相应的代码做一 些简单的修改,就可以改变同一页面的不同部分, 或者页数不同的网页的 外观和格式。 什么是CSS? 15.3.1 DHTML对象模型 什么是HTML? HTML(Hyper Text Mark-up Language)即超文本标记语 言,是WWW的描述语言。设计HTML语言的目的是为了能把存放 在一台电脑中的文本或图形与另一台电脑中的文本或图形方便 地联系在一起,形成有机的整体,人们不用考虑具体信息是在 当前电脑上还是在网络的其它电脑上。我们只需使用鼠标在某 一文档中点取一个图标,Internet就会马上转到与此图标相关 的内容上去,而这些信息可能存放在网络的另一台电脑中。 15.3.1 DHTML对象模 型 HTML的结构包括头部(Head)、主体(Body)两 大部分,其中头部描述浏览器所需的信息,而主体则 包含所要说明的具体内容。 HTML是一种ASCII标记语言的格式。HTML基本代码 见P166。 HTML只不过是组合成一个文本文件的一系列标签 。HTML标签通常是英文词汇的全称(如块引用 :blockquote)或缩略语(如“p”代表Paragragh)。 但它们的与一般文本有区别,因为它们放

温馨提示

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

评论

0/150

提交评论