WinAPI网络程序设计.ppt
- 文档编号:1414181
- 上传时间:2022-10-22
- 格式:PPT
- 页数:193
- 大小:1.86MB
WinAPI网络程序设计.ppt
《WinAPI网络程序设计.ppt》由会员分享,可在线阅读,更多相关《WinAPI网络程序设计.ppt(193页珍藏版)》请在冰豆网上搜索。
VC+网络程序设计,VC+网络程序设计,1网络应用程序的概念2TCP/IP应用程序工作模型与网络编程接口3套接口的概念及其编程原理4WinsockAPI基本函数5典型套接字调用过程、实例6应用MFC类建立网络应用程序,1网络应用程序的概念,1什么是网络应用程序2网络应用程序的标识问题3客户/服务器模型,1网络应用程序的概念,我们设计的应用程序可以简单地分为两种:
一种程序不需要使用其他程序产生的数据并且其他程序也不使用它输出的数据;另一种程序需要与其他的应用程序进行数据交换才能完成其功能,也就是说程序之间存在通信问题。
进程间通信的问题也可以分为两种:
一种是在操作系统中论述的单机系统中进程间的通信问题,另一种一般是在不同系统的进程间通过网络通信协议进行的进程间的通信问题。
1什么是网络应用程序,网络基本概念TCP/IP协议,TCP/IP指以TCP和IP为基础的不同层次上多个协议的集合。
TCP:
TransmissionControlProtocol;IP:
InternetProtocol,Telnet远程登录。
FTP文件传输协议。
SMTP简单邮件传送协议。
SNMP简单网络管理协议。
网络基本概念TCP/IP协议栈数据封装,每一层对收到的数据都要增加一些首部信息。
TCP传给IP的数据单元称作TCP报文段(TCPsegment),IP传给网络接口层的数据单元称作IP数据报(IPdatagram),通过以太网传输的比特流称作帧(Frame)。
网络基本概念IP协议,IP协议是数据报文协议。
它提供主要功能有:
无连接数据报传送数据报路由选择和差错控制IP协议主要特性:
IP协议将报文传送到目的主机后,无论传送正确与否都不进行检验、不回送确认、不保证分组的正确顺序。
2.网络基本概念IP地址,为实现网络中不同计算机之间的通信,每台机器都必须有一个与众不同的标识-IP地址:
;IP地址格式:
数字型,32位,由4个8位的二进制数组成,每8位之间用圆点隔开,如:
192.168.0.1;IP地址组成:
网络标识(netId)+主机标识(hostId);,TCP/IP(传输控制协议/网际协议)是Internet的主要协议,定义了计算机和外设进行通信所使用的规则。
TCP/IP网络参考模型包括五个层次:
应用层、传输层、网络层、链路层、物理层。
ISO/OSI网络参考模型则包括七个层次:
应用层、表示层、会话层、传输层、网络层、链路层、物理层。
物理层,网络基本概念,大多数基于Internet的应用程序被看作TCP/IP网络的最上层,如:
ftp,http,smtp,pop3,telnet,nntp等。
网络层对TCP/IP网络中的硬件资源进行标识。
连接到TCP/IP网络中的每台计算机(或其他设备)都有唯一的地址,这就是IP地址。
IP地址实质上是一个32位的整数,通常以“%d.%d.%d.%d”的形式表示,每个d是一个8位整数。
在TCP/IP网络中,不同的机器之间进行通信时,数据的传输是由传输层控制的,这包括数据要发往的目标机器及应用程序、数据的质量控制等。
TCP/IP网络中最常用的传输协议就是TCP(TransportControlProtocol)和UDP(UserDatagramProtocol)。
网络基本概念,DNS(域名系统),用于主机名称IP地址的转换,一台机器只通过一条链路连接到网络上,但一台机器中往往有很多应用程序需要进行网络通信,如何区分呢?
这就要靠网络端口号(port)了。
端口号是一个标记机器的逻辑通信信道的正整数,端口号不是物理实体。
IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的最后终结点,它是TCP和UDP的基础。
网络服务,http,ftp,其他服务,23,telnet,数据结构I/O缓冲区,端口,21,80,客户程序,Socket,IP,port,IP与端口号组合而得出的Socket,可以完全分辨Internet上运行的程序。
端口Port,端口号是用一个16位的整数来表达的,其范围为065535,其中01023为系统所保留,专门给那些通用的服务(well-knownservices),如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口为23,因此,当我们编写通信程序时,应选择一个大于1023的数作为端口号,以免发生冲突。
网络基本概念TCP协议,传输层通常以TCP和UDP协议来控制端点到端点的通信。
用于通信的端点是由Socket来定义的,Socket是由IP地址和端口号组成的。
传输控制协议(TCP)是在端点与端点之间建立持续的连接而进行通信。
建立连接后,发送端将发送的数据印记了序列号和错误检测代码,并以字节流的方式发送出去;接收端则对数据进行错误检查并按序列顺序将数据整理好,数据在需要时可以重新发送,因此整个字节流到达接收端时完好无缺。
这与两个人打电话的情形是相似的。
TCP协议具有可靠性和有序性,并且以字节流的方式发送数据,它通常被称为流通信协议。
网络基本概念UDP协议,与TCP协议不同,用户数据报协议(UDP)则是一种无连接的传输协议。
利用UDP协议进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的Socket(主机地址和端口号),然后再将数据报发送出去。
这种传输方式是无序的,也不能确保绝对的安全可靠,但它很简单也具有比较高的效率,这与通过邮局发送邮件的情形非常相似。
TCP协议和UDP协议各有各的用处。
当对所传输的数据具有时序性和可靠性等要求时,应使用TCP协议;当传输的数据比较简单、对时序等无要求时,UDP协议能发挥更好的作用,如ping,发送时间数据等。
网络基本概念,2网络应用程序的标识问题,同一系统中不同进程间进行通信时,通过系统分配的进程号(ProcessID)就可以惟一标识一个进程。
也就是说,要通信的进程只要知道对方的进程号就可以进行通信。
而网络情况下进程间的通信问题就要复杂得多,不能只简单地用进程号来标识不同的进程,因为各主机都独立地分配其进程号。
为了惟一地标识网络中通信的一个进程(即通信的某一方),就要使用一个如下的三元组:
(本地协议,本地IP地址,本地端口号),9.1网络应用程序的概念,这样一个三元组由于它只指定了通信时一条连接的半个部分,即通信的一方,因而称为半相关(Half-association)。
如果要完整地表示网络中进行通信的两个进程,那么就要使用一个如下结构的六元组:
(本地协议,本地地址,本地端口号,远地协议,远地地址,远地端口号)在互联网中通信的两台主机在网络层都只能使用IP协议,但在网络层之上可以选择使用TCP协议或UDP协议,这样就可能得到以下4种类型的相关六元组:
(本地TCP协议,本地IP地址,本地端口号,远程TCP协议,远程IP地址,远程端口号);(本地UDP协议,本地IP地址,本地端口号,远程UDP协议,远程IP地址,远程端口号);(本地TCP协议,本地IP地址,本地端口号,远程UDP协议,远程IP地址,远程端口号);(本地UDP协议,本地IP地址,本地端口号,远程TCP协议,远程IP地址,远程端口号)。
如果通信的两端使用不同的协议(后两类六元组),根据前面我们所学的知识,由于TCP协议和UDP协议使用的协议格式大不相同,通信时双方在传输层不能相互识别对方送来的数据,也就不可能进行正常的通信,因此后两种情况是不存在的。
换句话说,通信的两个进程在端到端的传输层只能使用相同的协议,因此一个完整的网间通信就可以简化为用一个五元组来标识通信的两个进程:
(协议,本地IP地址,本地端口号,远程IP地址,远程端口号),3客户/服务器模型,1客户/服务器模型的特点客户/服务器模型的通信方式从所具有的资源角度来说,有明显的非对称性。
服务器拥有较多的资源,它具有运算能力强,数据存储容量大,通信速度快,系统的可靠性高等优点。
相对来说,客户则拥有较少的资源,它在各方面的性能一般要比服务器差。
网络应用程序的概念,客户/服务器模型在工作时,要求有一套客户机和服务器能共同识别的规则或约定,用来保证服务器方可以识别客户提出的请求是什么,客户方也能够解释收到的服务器应答。
从本质上来说,这其实就是服务器方和客户方在通信中所使用的一套协议,它必须在通信的两端都被实现。
根据实际情况,协议可能是对称的也可能是非对称的。
在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机(服务器),而另一方则是从机(客户机)。
2服务器的分类根据服务器提供服务方式的不同,服务器可以分为串行服务器和并发服务器。
串行服务器只有一个进程用串行的方式对客户的请求提供服务;并发服务器可以为请求的每一个客户创建一个进程或线程,然后由对应的进程或线程给每一个客户提供服务。
并发服务器又可以分为预先创建服务子进程(或线程)和按需创建服务子进程(或线程)两种方式。
根据上面的分析,我们来总结一下客户/服务器模型的特点。
对于服务器方来说:
服务进程一般在启动后就一直运行,以等待客户请求的到来,除非服务被禁止或执行强迫终止服务程序。
服务器方进程使用的是众所周知的端口,否则客户无法知道提供服务的端口,也就不可能提出服务的请求。
服务器方通常拥有较多的资源(对称方式除外)。
服务器方进程可以并行处理多个客户的请求,当然可以同时处理的客户请求数目是有一定限制的。
服务器方在通信时属于被动的一方。
对于客户方来说:
在需要服务时向服务器提出请求,请求的服务得到满足并完成处理任务后,就终止客户程序的执行。
使用向系统申请的临时端口与服务器方进程进行通信。
拥有相对较少的资源(对称方式除外)。
客户方在通信时属于主动的一方。
2TCP/IP应用程序工作模型与网络编程接口,1TCP/IP应用程序工作模型使用TCP/IP协议的网络,其协议核心内容在层次结构的低三层,即网络接口层、IP层和传输层,而这三层的功能一般是由操作系统的内核来实现的。
如图9-1所示的是两台主机的进程间通过网络编程接口进行通信的原理图。
图9-1TCP/IP应用程序工作模型图,图9-1所示的是使用TCP/IP协议网络的典型应用方式,即客户/服务器模式。
通过图9-1,还要明白一个问题,网络程序设计其实是使用系统提供的网络协议完成用户程序的功能,即在网络应用程序中使用网络协议提供的服务,而不是让用户去实现网络协议各层的功能。
.2WindowsSockets简介1WindowsSockets的概念WindowsSockets是在Windows环境下使用的一套网络编程规范,常常简称为Winsock。
2WindowsSockets的来源Sockets本来是Unix操作系统下流行的一种网络编程接口(API),它是1983年在Berkeley(加州大学伯克利分校)BSD操作系统中被首先引入的,因此被称为“BerkeleySocketAPI”。
3WindowsSockets的版本目前常用的Winsock有两个版本:
一个是16位的Winsock1.1,由动态链接库WINSOCK.DLL提供支持;另一个是32位的Winsock2.2,由动态链接库WSOCK32.DLL提供支持。
4WinsockAPI函数的分类在Winsock规范中把WinsockAPI函数集分为与BSDSocket(用在Unix中)相兼容的基本函数、网络数据信息检索函数和Windows专用扩展函数三类。
Winsock规范的核心内容是符合BerkeleySocket风格的库函数,但为了使程序员能充分利用Windows消息驱动机制进行编程,又定义开发了一组针对Windows的扩展库函数。
WindowsSockets规范中针对Windows的扩展部分,为应用程序开发者提供了开发Windows应用软件的功能,它有利于程序员写出更加稳定并且更加高效的程序。
另外,除了WSAStartup()和WSACl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WinAPI 网络程序设计