使用Winsock库函数之前,必须先调用函数WSAStartup,该函数负责初始化动态连接库Ws2_32.dll.
函数定义:
int WSAStartup ( WORD wVersionRequested, LPWSADATA lpWSAData );
wVersionRequested:[IN],是一个WORD(双字节)数值,它指定了应用程序需要使用的Winsock版本.
主版本号在 低字节, 次版本号在 高字节。
不关心版本问题:
使用常量 WINSOCK_VERSION 赋值给 wVersionRequested , 常量在Winsock2.h中定义。
实例:希望版本号为 1.2 可以如下代码:
wVersionRequested = 0x0201,或者 wVersionRequested = MAKEWORD(1,2)
MAKEWORD是一个宏定义主要由两个字节组成的WORD。
lpWSAData:[OUT],指向WSADATA数据结构的指针,该结构用于返回本机的Winsock系统实现的信息.
该结构WhighVersion和wVersion两个域系统支持的最高版本,后者是系统希望调用者使用的版本.
函数成功 返回0; 否则返回错误码. 需要注意ws2_32.dll尚未初始化,是无法调用
WSAGetLastError().int WSAGetLastError(void);
WSAStartup是任何使用Winsock的应用程序或者DLL首先必须调用Winsock库函数
.
一方面它初始化 ws2_32.dll,另一方面他用于在应该程序DLL与系统Winsock库版本协商.
当要求的版本(Winsock的最高版本)等与或高于系统支持的最底版本(下限),那么该函数操作成功并且在WSADATA.WhighVersion中返回系统支持的最高版本,在WSADATA.wVersion中返回系统支持的最高版(上限)和 wVersionRequested 之间的较小值。