轻松学Visual C++之网络编程

上传人:ldj****22 文档编号:49059388 上传时间:2018-07-23 格式:PPTX 页数:65 大小:1.03MB
返回 下载 相关 举报
轻松学Visual C++之网络编程_第1页
第1页 / 共65页
轻松学Visual C++之网络编程_第2页
第2页 / 共65页
轻松学Visual C++之网络编程_第3页
第3页 / 共65页
轻松学Visual C++之网络编程_第4页
第4页 / 共65页
轻松学Visual C++之网络编程_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《轻松学Visual C++之网络编程》由会员分享,可在线阅读,更多相关《轻松学Visual C++之网络编程(65页珍藏版)》请在金锄头文库上搜索。

1、第15章 网络编程 随着Internet的普及,人们的生活已经越来越离不开 网络。所以,编写网络程序成了每个开发人员必不 可少的一项基本技能。VC+为编写网络程序提供了 多种支持,使我们能更快更方便的的开发出满足需 要网络应用程序。通过本章学习,读者也可以编写 出即时的聊天程序。15.1 网络编程基础 在使用VC+实现网络编程之前,我们有必要学习一 下计算机网络的概念、一些常见的术语、还有计算 机网络的协议等网络编程的基础知识。15.1.1 计算机网络 计算机网络,即相互连接的独立自主的计算机集合 ,最简单的网络形式可以只由两台计算机组成,如 下图所示。15.1.1 计算机网络 在Intern

2、et上,为了保证两台主机进行正常的通信, 它们需要遵循约定的规则。我们把这种规则称之为 协议。如果A主机和B主机采用同样的协议,它们之 间就可以进行通信了。但是主机之间的通信往往不 是单一的,一台计算机上可能有多个程序要完成网 络的通信。例如,我们一边挂着QQ,一边还要看电 影,一边还在用迅雷下载东西。那么当信息发送到 某个IP地址的主机时,应该哪个程序来接收呢?15.1.1 计算机网络 为了标识计算机上运行的每个网络应用程序,我们 提出了端口的概念;每个网络应用程序都被分配了 一个端口号。在发送数据时,除了指定接收数据主 机的IP地址外,还要指定端口号。这样,在指定IP地 址的计算机上,将会

3、由与指定端口号相对应的网络 应用程序来接收数据。就好像我们打电话,IP地址 就像是一个公司的总机号码,端口号就相当于分机 号码。在打电话时,拨通总机后,还需要转到分机 上,才能找到需要与你通话的人。15.1.2 网络协议 网络协议是网络上所有设备之间通信规则、标准和约定 的集合。不同的计算机之间必须使用相同的网络协议才 能进行通信。 TCP/IP协议是目前在网络中应用得最广泛的协议。 TCP/IP是一个关于Internet的标准,并随着的Internet广泛 应用而被大众所知,它也成为局域网所使用首选的协 议。TCP/IP是一种分层协议,它共被分为个4层次。通过 使用该协议,可以高效和可靠地实

4、现各地的计算机相互 连接。TCP/IP协议中的核心协议有TCP(传输控制协议 )、UDP(用户数据报协议)和IP(因特网协议)。15.1.2 网络协议 1TCP协议 TCP(Transmission Control Protocol/Internet Protocol,传输控制 协议)提供一种面向连接的、可靠的字节流服务。面向连接意味 着两个使用TCP的应用(通常是一个客户和一个服务器)在彼 此交换数据之前必须先建立一个TCP连接。 该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性 的数据包交换。IP协议可以进行IP数据包的分割和组装,但是 通过IP协议并不能清楚地了解到数据包是否顺利地

5、发送给目标 计算机。而使用TCP协议就不同了,在该协议传输模式中在将 数据包成功发送给目标计算机后,TCP会要求发送一个确认; 如果在某个时限内没有收到确认,那么TCP将重新发送数据 包。另外,在传输的过程中,如果接收到无序、丢失以及被破 坏的数据包,TCP还可以负责恢复。15.1.2 网络协议 2UDP协议 UDP协议(User Datagram Protocol,用户数据报协议 )是OSI参考模型中一种无连接的传输层协议,提供 面向事务的简单不可靠信息传送服务。UDP协议基 本上是IP协议与上层协议的接口。UDP协议适用端 口分别运行在同一台设备上的多个应用程序。15.1.2 网络协议 3

6、IP协议 IP协议(Internet Protocol,网络之间互连的协议)是为计算机 网络相互连接进行通信而设计的协议。在因特网中,它是能使 连接到网上的所有计算机网络实现相互通信的一套规则,规定 了计算机在因特网上进行通信时应当遵守的规则。任何厂家生 产的计算机系统,只要遵守IP协议就可以与因特网互连互通。 正是因为有了IP协议,因特网才得以迅速发展成为世界上最大 的、开放的计算机通信网络。IP地址可以称为互联网地址或 Internet地址,是用来惟一标识互联网上计算机的逻辑地址。每 台连网计算机都依靠IP地址来标识自己,这就很类似于我们的 电话号码样的。通过电话号码来找到相应的具体的电话

7、。全世 界的电话号码都是惟一的,IP地址也是一样。15.1.3 OSI参考模型 在计算机网络产生之初,每个计算机厂商都有一套 自己的网络体系结构,它们之间互不兼容。为此, 国际标准化组织(ISO)建立了一个专门的机构来研 究一种标准的网络体系结构,来实现对网络的连 接。这个标准即开放系统互联体系结构(Open Systems Interconnection,简称OSI)。它定义了连接 不同类型计算机的标准框架。15.1.3 OSI参考模型 OSI参考模型分为层,分别是物理层、数据链路 层、网络层、传输层、会话层、表示层和应用层, 如下图所示。15.1.4 TCP/IP参考模型 TCP/IP协议

8、(Transfer Control Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协 议,这个协议是Internet国际互联网络的基础。 TCP/IP参考模型分为四个层次:应用层、传输层、 网络层和数据链路层。在TCP/IP参考模型中,去掉 了OSI参考模型中的会话层和表示层(这两层的功能 被合并到应用层实现)。同时将OSI参考模型中的数 据链路层和物理层合并为链路层。15.1.4 TCP/IP参考模型 TCP/IP与OSI参考模型的对应关系如下图所示。15.1.5 网络编程相关概念 1.端口 按照OSI七层参考模型,传输层提供进程通信的能力。为了表

9、 示通信实体中进行通信的进程,TCP/IP协议提出了协议端口( Protocol Port)的概念,简称端口。 端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区 )。应用程序通过系统调用与某端口建立连接(Binding)后, 传输层传给该端口的数据都被相应的进程所接收,相应进程发 给传输层的数据都要通过该端口输出。 端口使用一个16位的数字表示,所以它的范围为065535, 1024以下的端口号保留给预定义的服务。例如,http使用的80 端口。所以我们在编写网络应用程序时,要为程序制定1024以 上的端口号。15.1.5 网络编程相关概念 2.套接字(Socket) 为了能够方便的开

10、发网络应用软件,由美国伯克利大学 在UNIX上推出了一种应用程序访问通信协议的操作系统 调用套接字(Socket)。Socket的出现,使程序员可以很 方便地访问TCP/IP,从而开发各种网络应用程序。随着 UNIX的应用推广,套接字在编写网络软件中得到了极大 的普及。后来套接字又被引进了Windows等操作系统,称 为开发网络应用程序非常有效快捷的工具。 。15.1.5 网络编程相关概念 3.网络字节顺序 字节顺序是指占内存多于一个字节的数据在内存中的存 放顺序。通常有两种顺序,一种是低字节数据存放在内 存低地址处,高字节数据存放在内存高地址处;另一种 是高字节数据存放在低地址处,低字节数据

11、存放在高地 址处。 由于不同的计算机存放多字节值的顺序不同,为保证数 据的正确性,在网络协议中须指定网络字节顺序。 TCP/IP协议使用16位整数和32位整数的高位先存(即起 始地址存放高位字节)格式,它们均被含在协议头文件 中。在网络中不同主机进行通信时,要同一采用网络字 节顺序。15.1.5 网络编程相关概念 4.半相关与全相关 在网络通信中,可以使用一个三元组(协议、地址、端 口号)来表示通信双方的一端。这样的一个三元组叫做 一个半相关(Half-association)。一个完整的通信,需要 由两个进程完成。可以使用一个五元组(协议、本地地 址、本地端口号、远地地址、远地端口号)来表示

12、通信 的双方。这样一个五元组叫做一个全相关。 两个通信实体要进行通信,必须使用同一种高层协议。 例如,通信双方必须同时使用TCP或UDP协议。两个协议 相同的半相关才能组合成一个合适的全相关。15.1.5 网络编程相关概念 5.客户机/服务器模式 在TCP/IP网络中,通信的两个进程之间通常使用客户机/ 服务器模式(Client/Server),即客户端向服务器发送请 求,服务器收到请求后提供相应的服务。 客户机/服务器模式的建立主要基于两点。首先是建立网 络的起因是网络中软硬件资源、运算能力和信息不均等 ,需要共享。从而造成了拥有众多资源的主机提供服务 ,资源较少的客户请求服务这一非对等关系

13、。其次是网 间进程通信完全异步,互相通信的进程间既不存在父子 关系,也不存在共享缓冲区。因此需要一种机制为希望 通信的进程间建立联系,为二者的数据交换提供同步。 这就是基于客户机/服务器模式的TCP/IP。15.1.5 网络编程相关概念 客户机/服务器模式在操作过程中采用的是主动请求方 式。首先服务器方要先启动,并等待连接请求,其过程 如下: (1)打开一通信通道并告知本地主机,它愿意在某一个 公认地址上接收客户请求; (2)等待客户请求; (3)接收到服务请求,处理该请求,并发送应答信号; (4)返回第二步,等待其他客户请求; (5)关闭服务器。15.1.5 网络编程相关概念 客户方需要主动

14、连接到服务器,具体步骤如下: (1)打开一通信通道,并连接服务器指定的端口; (2)向服务器发送服务请求报文; (3)等待并接收应答; (4)请求结束后关闭通信通道。15.1.6 VC+对网络编程的支持 微软提供了在Windows下进行网络编程的结构 Windows Socket API。使用VC+除了能利用 Windows Socket API进行编程外,MFC还提供了专门 的类让开发者能更方便的进行网络应用程序的开 发。下面我们来介绍VC+对网络编程的支持有哪 些。15.1.6 VC+对网络编程的支持 1.Windows Socket API Windows环境下进行网络程序设计的最基本方

15、法是 应用Windows Sockets实现进程间的通信。为此微软 提供了大量基于Windows Sockets的通信API,如 WinSock API、WinInet API和ISAPI,并一直致力于 开发更快、更容易的通信API。在Visual C+中,完 全可以利用这些API函数进行网络程序的开发,而不 比附加任何其他内容。15.1.6 VC+对网络编程的支持 2.MFC WinSock类 虽然Windows Socket API提供了强大的网络编程接口 ,但是只用它们来进行编程是一件非常烦琐的事 情。为了方便程序员的开发,MFC对Windows Socket API进行了封装。15.1

16、.6 VC+对网络编程的支持 3.WinInet支持 一个Internet客户端程序的目的是通过像HTTP、FTP等 Internet协议来存取服务器的信息。WinInet是指由 Microsoft提供的Internet函数接口,这些函数由WinInet.dll 动态库提供,程序员利用这些函数能方便地使用HTTP、 FTP和gopher访问Internet,甚至还能进行Finger查询和 Whois查询。 为了更方便的开发Internet应用程序,MFC将WinInet函数 封装在一个类库中。在编写WinInet客户端应用程序时, 既可以直接使用Win32函数,也可以使用WinInet类库。 MFC提供了13个WinInet类,它们实现了一系列Internet访 问功能。15.1.6 VC+对网络编程的支持 4.MAPI支持 MA

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号