⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 14.3.1 wsastartup函数.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 TXT
字号:
14.3.1 WSAStartup函数
在利用套接字编程时,第一步需要加载套接字库,这通过 WSAStartup函数来实现。该函数有两
个功能:一是加载套接字库,一是进行套接字库的版本协商,也就是确定将使用的 socket版本。
该函数的原型声明如下所示:

int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); 
WSAStartup函数有两个参数,其含义分别如下所述: 
. wVersionRequested 
用来指定准备加载的 Winsock库的版本。高位字节指定所需要的 Winsock库的副版本,而低位字
节则是主版本。通常版本号为: 2.1,其中 2就是主版本号, 1就是副版本号。可以利用 MAKEWORD 
(x, y)宏(其中 x是高位字节, y是低位字节)方便地获得 wVersion Requested的正确值。 
. lpWSAData 
这是一个返回值,指向 WSADATA结构的指针, WSAStartup函数用其加载的库版本有关的信息填
在这个结构中。 
WSADATA结构的定义如下所示: 
typedef struct WSAData { 
WORD wVersion; 
WORD wHighVersion; 
char szDescription[WSADESCRIPTION_LEN +1] ; 
char szSystemStatus[WSASYS_STATUS_LEN+1]; 
unsigned short iMaxSockets; 
unsigned short iMaxUdpDg; 
char FAR * lpVendorlnfo; 
} WSADATA , *LPWSADATA; 
WSAStartup函数把 WSAData结构中的第一个字段 wVersion设置为打算使用的 Winsock版本。 
wHighVersion字段容纳的是现有的 Winsock库的最高版本。记住,这两个字段中,高位字节代表
的是 Winsock副版本,而低位字节代表的则是 Winsock主版本。 szDescription和 
szSystemStatus这两个字段由特定的 Winsock实施方案设定,事实上并没有用。不要使用下面这
两个字段: iMaxSockets和 iMaxUdpDg,它们是假定同时最多可打开多少套接字和数据报的最大
长度。然而,要知道数据报的最大长度应该通过 WSAEnumProtocols函数来查询协议信息。同时
最多可打开套接字的数目不是固定的,很大程度上和可用物理内存的多少有关。最后, 
lpVendorlnfo字段是为 Winsock实施方案有关的指定厂商信息预留的,任何一个 Win32平台上都
没有使用这个字段。
如果 Ws2_32.lib或底层网络子系统没有被正确地初始化或没有被找到, WSAStartup 函数将返
回 WSASYSNOTREADY。此外,这个函数允许你的应用程序协商使用某种版本的 WinSock规范,如
果请求的版本等于或高于 WinSock动态库所支持的最低版本, WSAData的 wVersion成员中将包
含你的应用程序应该使用的版本,它是动态库所支持的最高版本与请求版本中较小的那个。反之,
如果请求的版本低于 WinSock动态库所支持的最低版本, WSAStartup函数将返回 
WSAVERNOTSUPPORTED。关于 WSAStartup函数更详细的信息,请查阅 MSDN中相关内容。
对于每一个 WSAStartup函数的成功调用(即成功加载 WinSock动态库后),在最后都对应一个 
WSACleanUp调用,以便释放为该应用程序分配的资源,终止对 WinSock动态库的使用。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -