Windows+网络编程技术(九)Windows_网络编程技术(九)_.pdf

Windows+网络编程技术(九)Windows_网络编程技术(九)_.pdf

ID:52241647

大小:1.17 MB

页数:36页

时间: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、下载第9章套接字选项和I/O控制命令套接字一旦建立,通过套接字选项和I/O控制命令对各种属性进行操作,便可对套接字的行为产生影响。有的选项只用于信息的返回,而有的选项则可在应用程序中影响套接字的行为。I/O控制命令肯定会对套接字的行为产生影响。本章着重讨论四个Winsock函数:getsockopt、setsocketopt、ioctlsocket和WSAIoctl。每个函数都有大量命令,其中大多数尚未正式或正确写入参考文档。本章将讨论各函数需要的参数和可以使用的选项,以及哪些平台对这些选项提供了支持。在此,我们假定各个选项都能在Win32平台上运行(WindowsCE

2、、Windows95、Windows98、WindowsNT和Windows2000);如有例外,我们会专门注明。但选项在要求Winsock2的支持时,情况可能有所不同。因为Winsock2本身便不能在所有平台上通用。因此,Winsock2的I/O控制命令和选项在WindowsCE与Windows95平台上未获支持(除非已在Windows95上安装了Winsock2升级补丁程序)。另外还要记住:WindowsCE不支持除TCP/IP以外的其他协议的任何专用选项。这些I/O控制命令和选项大多定义在Winsock.h或Winsock2.h内,具体取决于它们到底从属于Wins

3、ock1,还是从属于Winsock2。但是,也有少数几个选项是Microsoft提供者或某种传输协议所特有的。微软特有的一些扩展定义在Winsock.h和Mswsock.h这两个头文件内。而传输提供者扩展定义在与其协议对应的头文件内。针对那些传输特有选项,我们将随选项一道,指明正确的头文件是什么。要注意的是,若应用程序使用了微软特有的扩展,那么必须同Mswock.lib建立链接。9.1套接字选项对getsocketopt(获得套接字选项)函数来说,它的常见用法是获得与指定套接字相关的信息。其原型如下:第一个参数s指定的是一个套接字,我们打算在这个套接字上执行指定的选项。

4、对你打算使用的具体协议来说,这个套接字必须是有效的。大多数选项都是一种特定的协议和套接字类型专有的,而其他选项适用于所有类型的套接字(特别是第二个参数level)。SOL_SOCKET的一个选项级别表明它是一个通用选项,并不一定要与一种给定的协议有关。但之所以说“不一定”,是由于并非所有协议都实现了级别SOL_SOCKET定义的每一个套接字选项。例如,SO_BROADCAST可将一个套接字置入广播模式,但并非所有支持的协议都支持广播套接字的概念。optname参数是我们在此真正感兴趣的选项。这些选项名均是在Winsock头文件内定义的常数值。最常见的与协议无关选项(比如

5、和SOL_SOCKET级别关联在一起的选项)是在208计计第二部分附WinsockAPI下载Winsock.h和Winsock2.h这两个头文件中定义的。对于每种特定的协议来说,它们都有自己的头文件,定义了与之对应的特定选项。最后,optval和optlen参数是两个变量,用于返回目标选项的值。大多数情况下,选项值都是一个整数(但也不是绝对的)。setsocketopt函数用于在一个套接字级别或由协议决定的级别上设置套接字选项。它的定义如下:它的参数和getsocketopt函数的参数相同,例外的是我们以optval和optlen参数的形式,将值传递进去。这些值是为指定

6、的选项设定的。和getsocketopt函数一样,optval大多数时候都是一个整数,但也并非总是如此。正式编程的时候,应查询对每个选项的说明,了解到底该将什么作为选项值传递进去。调用getsocketopt或setsocketopt时,最常见的错误是试图获得一个套接字的信息,但那个套接字的基层协议却不具备某种指定的特征(或选项)。例如,类型为SOCK_STREAM的一个套接字本身是不能对数据进行广播操作的;因此,若试图设置或获取SO_BROADCAST选项,便会造成WSAENOPROTOOPT错误。9.1.1SOL_SOCKET选项级别本节介绍可根据套接字本身的特征,

7、返回信息的一些套接字选项,但这些信息并非那个套接字的基层协议所特有的(与它无关)。1.SO_ACCEPTCONN选项值类型获取/设置Winsock版本说明布尔值只能获取1+如为TRUE(真),表明套接字处于监听模式如果已通过Listen函数,将套接字置入监听模式,这个选项就会返回TRUE。SOCK_DGRAM类型的套接字不支持这一选项。2.SO_BROADCAST选项值类型获取/设置Winsock版本说明布尔值两种均可1+如为TRUE,表明套接字已配置成对广播消息进行发送如果指定的套接字已经配置成收发广播数据,对这个套接字选项进行查询,就

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

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

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