轻松学VisualC之网络编程.pptx
《轻松学VisualC之网络编程.pptx》由会员分享,可在线阅读,更多相关《轻松学VisualC之网络编程.pptx(65页珍藏版)》请在三一办公上搜索。
1、第15章 网络编程,随着Internet的普及,人们的生活已经越来越离不开网络。所以,编写网络程序成了每个开发人员必不可少的一项基本技能。VC+为编写网络程序提供了多种支持,使我们能更快更方便的的开发出满足需要网络应用程序。通过本章学习,读者也可以编写出即时的聊天程序。,15.1 网络编程基础,在使用VC+实现网络编程之前,我们有必要学习一下计算机网络的概念、一些常见的术语、还有计算机网络的协议等网络编程的基础知识。,15.1.1 计算机网络,计算机网络,即相互连接的独立自主的计算机集合,最简单的网络形式可以只由两台计算机组成,如下图所示。,15.1.1 计算机网络,在Internet上,为了
2、保证两台主机进行正常的通信,它们需要遵循约定的规则。我们把这种规则称之为协议。如果A主机和B主机采用同样的协议,它们之间就可以进行通信了。但是主机之间的通信往往不是单一的,一台计算机上可能有多个程序要完成网络的通信。例如,我们一边挂着QQ,一边还要看电影,一边还在用迅雷下载东西。那么当信息发送到某个IP地址的主机时,应该哪个程序来接收呢?,15.1.1 计算机网络,为了标识计算机上运行的每个网络应用程序,我们提出了端口的概念;每个网络应用程序都被分配了一个端口号。在发送数据时,除了指定接收数据主机的IP地址外,还要指定端口号。这样,在指定IP地址的计算机上,将会由与指定端口号相对应的网络应用程
3、序来接收数据。就好像我们打电话,IP地址就像是一个公司的总机号码,端口号就相当于分机号码。在打电话时,拨通总机后,还需要转到分机上,才能找到需要与你通话的人。,15.1.2 网络协议,网络协议是网络上所有设备之间通信规则、标准和约定的集合。不同的计算机之间必须使用相同的网络协议才能进行通信。TCP/IP协议是目前在网络中应用得最广泛的协议。TCP/IP是一个关于Internet的标准,并随着的Internet广泛应用而被大众所知,它也成为局域网所使用首选的协议。TCP/IP是一种分层协议,它共被分为个4层次。通过使用该协议,可以高效和可靠地实现各地的计算机相互连接。TCP/IP协议中的核心协议
4、有TCP(传输控制协议)、UDP(用户数据报协议)和IP(因特网协议)。,15.1.2 网络协议,1TCP协议TCP(Transmission Control Protocol/Internet Protocol,传输控制协议)提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。而使用TCP协议就不同了,在该协议传输模式中在将数
5、据包成功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。另外,在传输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复。,15.1.2 网络协议,2UDP协议UDP协议(User Datagram Protocol,用户数据报协议)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。,15.1.2 网络协议,3IP协议IP协议(Internet Protocol,网络之间互连的协议)是为计算机
6、网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。IP地址可以称为互联网地址或Internet地址,是用来惟一标识互联网上计算机的逻辑地址。每台连网计算机都依靠IP地址来标识自己,这就很类似于我们的电话号码样的。通过电话号码来找到相应的具体的电话。全世界的电话号码都是惟一的,IP地址也是一样。,15.1.3 OSI参考模型,在计算机网络产生之初,每
7、个计算机厂商都有一套自己的网络体系结构,它们之间互不兼容。为此,国际标准化组织(ISO)建立了一个专门的机构来研究一种标准的网络体系结构,来实现对网络的连接。这个标准即开放系统互联体系结构(Open Systems Interconnection,简称OSI)。它定义了连接不同类型计算机的标准框架。,15.1.3 OSI参考模型,OSI参考模型分为层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如下图所示。,15.1.4 TCP/IP参考模型,TCP/IP协议(Transfer Control Protocol/Internet Protocol)叫做传输控制/网际协议,
8、又叫网络通讯协议,这个协议是Internet国际互联网络的基础。TCP/IP参考模型分为四个层次:应用层、传输层、网络层和数据链路层。在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为链路层。,15.1.4 TCP/IP参考模型,TCP/IP与OSI参考模型的对应关系如下图所示。,网络编程相关概念,1.端口按照OSI七层参考模型,传输层提供进程通信的能力。为了表示通信实体中进行通信的进程,TCP/IP协议提出了协议端口(Protocol Port)的概念,简称端口。端口是一种抽象的软件结构(包括一
9、些数据结构和I/O缓冲区)。应用程序通过系统调用与某端口建立连接(Binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都要通过该端口输出。端口使用一个16位的数字表示,所以它的范围为065535,1024以下的端口号保留给预定义的服务。例如,http使用的80端口。所以我们在编写网络应用程序时,要为程序制定1024以上的端口号。,网络编程相关概念,2.套接字(Socket)为了能够方便的开发网络应用软件,由美国伯克利大学在UNIX上推出了一种应用程序访问通信协议的操作系统调用套接字(Socket)。Socket的出现,使程序员可以很方便地访问TCP/IP,从
10、而开发各种网络应用程序。随着UNIX的应用推广,套接字在编写网络软件中得到了极大的普及。后来套接字又被引进了Windows等操作系统,称为开发网络应用程序非常有效快捷的工具。,网络编程相关概念,3.网络字节顺序字节顺序是指占内存多于一个字节的数据在内存中的存放顺序。通常有两种顺序,一种是低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;另一种是高字节数据存放在低地址处,低字节数据存放在高地址处。由于不同的计算机存放多字节值的顺序不同,为保证数据的正确性,在网络协议中须指定网络字节顺序。TCP/IP协议使用16位整数和32位整数的高位先存(即起始地址存放高位字节)格式,它们均被含在协议
11、头文件中。在网络中不同主机进行通信时,要同一采用网络字节顺序。,网络编程相关概念,4.半相关与全相关在网络通信中,可以使用一个三元组(协议、地址、端口号)来表示通信双方的一端。这样的一个三元组叫做一个半相关(Half-association)。一个完整的通信,需要由两个进程完成。可以使用一个五元组(协议、本地地址、本地端口号、远地地址、远地端口号)来表示通信的双方。这样一个五元组叫做一个全相关。两个通信实体要进行通信,必须使用同一种高层协议。例如,通信双方必须同时使用TCP或UDP协议。两个协议相同的半相关才能组合成一个合适的全相关。,网络编程相关概念,5.客户机/服务器模式在TCP/IP网络
12、中,通信的两个进程之间通常使用客户机/服务器模式(Client/Server),即客户端向服务器发送请求,服务器收到请求后提供相应的服务。客户机/服务器模式的建立主要基于两点。首先是建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享。从而造成了拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等关系。其次是网间进程通信完全异步,互相通信的进程间既不存在父子关系,也不存在共享缓冲区。因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步。这就是基于客户机/服务器模式的TCP/IP。,网络编程相关概念,客户机/服务器模式在操作过程中采用的是主动请求方式。首先服务
13、器方要先启动,并等待连接请求,其过程如下:(1)打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求;(2)等待客户请求;(3)接收到服务请求,处理该请求,并发送应答信号;(4)返回第二步,等待其他客户请求;(5)关闭服务器。,网络编程相关概念,客户方需要主动连接到服务器,具体步骤如下:(1)打开一通信通道,并连接服务器指定的端口;(2)向服务器发送服务请求报文;(3)等待并接收应答;(4)请求结束后关闭通信通道。,VC+对网络编程的支持,微软提供了在Windows下进行网络编程的结构Windows Socket API。使用VC+除了能利用Windows Socket API进
14、行编程外,MFC还提供了专门的类让开发者能更方便的进行网络应用程序的开发。下面我们来介绍VC+对网络编程的支持有哪些。,VC+对网络编程的支持,1.Windows Socket APIWindows环境下进行网络程序设计的最基本方法是应用Windows Sockets实现进程间的通信。为此微软提供了大量基于Windows Sockets的通信API,如WinSock API、WinInet API和ISAPI,并一直致力于开发更快、更容易的通信API。在Visual C+中,完全可以利用这些API函数进行网络程序的开发,而不比附加任何其他内容。,VC+对网络编程的支持,2.MFC WinSoc
15、k类虽然Windows Socket API提供了强大的网络编程接口,但是只用它们来进行编程是一件非常烦琐的事情。为了方便程序员的开发,MFC对Windows Socket API进行了封装。,VC+对网络编程的支持,3.WinInet支持一个Internet客户端程序的目的是通过像HTTP、FTP等Internet协议来存取服务器的信息。WinInet是指由Microsoft提供的Internet函数接口,这些函数由WinInet.dll动态库提供,程序员利用这些函数能方便地使用HTTP、FTP和gopher访问Internet,甚至还能进行Finger查询和Whois查询。为了更方便的开发
16、Internet应用程序,MFC将WinInet函数封装在一个类库中。在编写WinInet客户端应用程序时,既可以直接使用Win32函数,也可以使用WinInet类库。MFC提供了13个WinInet类,它们实现了一系列Internet访问功能。,VC+对网络编程的支持,4.MAPI支持MAPI是Messaging Application Progrmming Interface的缩写。MAPI提供了一组函数,能够支持邮件或邮件撰写应用程序的开发。MFC并没有封装整个MAPI函数集,但是可以在MFC应用程序中直接使用MAPI函数。在MFC的CDocument类中提供了OnFileSendMai
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 轻松 VisualC 网络 编程

链接地址:https://www.31ppt.com/p-6611123.html