Windows+网络编程技术(十四)Windows_网络编程技术(十.pdf

Windows+网络编程技术(十四)Windows_网络编程技术(十.pdf

ID:52241645

大小:1.15 MB

页数:34页

时间:2020-03-25

Windows+网络编程技术(十四)Windows_网络编程技术(十.pdf_第1页
Windows+网络编程技术(十四)Windows_网络编程技术(十.pdf_第2页
Windows+网络编程技术(十四)Windows_网络编程技术(十.pdf_第3页
Windows+网络编程技术(十四)Windows_网络编程技术(十.pdf_第4页
Windows+网络编程技术(十四)Windows_网络编程技术(十.pdf_第5页
资源描述:

《Windows+网络编程技术(十四)Windows_网络编程技术(十.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、下载第14章Winsock2服务提供者接口Winsock2服务提供者接口(ServiceProviderInterface,SPI)代表着另一端的Winsock编程(和Winsock2API相对应)。Winsock的一端是API,另一端则是SPI。自第6章到第13章,我们已对Winsock2API进行了详细讨论。Winsock2是围绕着Windows开放系统架构(WindowsOpenSystemArchitecture,WOSA)来设计的,WOSA在Winsock和Winsock应用程序之间有一个标

2、准API;在Winsock和Winsock服务提供者(比如TCP/IP)之间有一个标准的SPI。图14-1展示了Ws2_32.dll,即Winsock2支持的动态链接库(DLL)在Winsock应用程序和Winsock服务提供者之间的分布情况。本章详细地讲解了Winsock2SPI。在结束本章的学习时,大家自然便理解如何开发服务提供者,进一步扩展Winsock2的能力。Winsock2应用程序Winsock2应用程序传输函数名字空间函数TheWinsock2DLLWs2_32.dll(32-bit)W

3、insock2Winsock2传输服务名字空间提供者接口提供者接口传输服务传输服务名字空间名字空间提供者提供者提供者提供者图14-1Winsock2的WOSA架构14.1SPI基础Winsock2SPI允许开发两类服务提供者—传输提供者和名字空间提供者。“传输提供者”(Transportproviders,一般称作协议堆栈,比如TCP/IP)即能够提供建立通信、传输数据、日常数据流控制和错误控制等等功能的服务。“名字空间提供者”(Namespaceproviders)则把一个网络协议的定址属性和一个或

4、多个用户友好名关联到一起,以便启用与协议无关的名字解析方案。服务提供者不外乎就是Win32支持的DLL,挂靠在Winsock2的Ws2_32.dll模块下。对Winsock2API中定义的许多内部调用来说,这些服务提供者都提供了它们的运作方式。364计计第二部分附WinsockAPI下载14.1.1SPI命名规则Winsock2SPI函数原型采用下面的函数前缀命名规则:■WSP(Winsock提供者):用于传送服务提供者函数。■NSP(名字空间提供者):用于名字空间提供者函数。■WPU(Winsock

5、提供者上调):供服务提供者调用的Ws2_32.dll支持函数使用。■WSC(Winsock配置):供在Winsock2中安装服务提供者的函数使用。举个例子来说,一个名为WSAInstallProvider的函数,仅仅是一个SPI配置函数。14.1.2Winsock2API和SPI函数之间的映射多数情况下,一个应用程序在调用Winsock2函数时,Ws2_32.dll会调用相应的WinsockSPI函数,利用特定的服务提供者执行所请求的服务。举个例子来说,select对应WSPSelect,WSACon

6、nect对应WSPConnect,而WSAAccept则对应WSPAccept。然而,并非所有的Winsock函数都有对应的SPI函数。下面列出了这些例外情况。■htonl、htons、ntohl和ntohs这一类的支持函数在Ws2_32.dll内部执行,没向下传给服务提供者。这一点对这些函数的WSA版本来说,也不例外。■像inet_addr和inet_ntoa这样的IP转换函数只能在Ws2_32.dll内执行。■Winsock1.1中,所有由IP决定的名字转换和解析函数(比如getXbyY、WSAA

7、synGetXByY、WSACancelAsyncRequest以及gethostname)都在Ws2_32.dll内部执行。■Winsock服务提供者列举和与锁定挂钩相关的函数都在Ws2_32.dll内部执行。因此,WSAEnumProtocols、WSAIsBlocking、WSASetBlockingHook和WSAUnhookBlocking没有相应的SPI函数。■Winsock错误代码的管理在Ws2_32.dll内部进行。而SPI中,不需要WSAGetLastEror和WSASetLastE

8、rror。■事件对象处理和等待函数,其中包括WSACreateEvent、WSACloseEvent、WSASetEvent、WSAResetEvent和WSAWaitForMultipleEvents,这些函数直接映射成原始的Win32操作系统调用,没有出现在SPI中。现在,大家准备学习哪些WinsockAPI映射成Winsock2服务提供者。在开发服务提供者时,大家将看到定义在包容文件Ws2spi.h中的所有SPI函数原型。14.2传输服务提供者Wi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。