1.2.2 开发准备(2)
3. Winsock库函数
在本实例中,还需要使用Winsock库函数实现注册、注销以及错误处理。接下来将简单讲解两个最为常用的Winsock库函数的基本知识。
(1) WSAStartup
在使用Winsock库函数之前,必须先调用函数WSAStartup,该函数负责初始化动态链接库Ws2_32.dll。
函数WSAStartup的定义格式如下:
- int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
wVersionRequested:是一个WORD(双字节)数值,它指定了应用程序需要使用的Winsock版本,主版本号在低字节,次版本号在高字节。
lpWSAData:指向WSADATA数据结构的指针,该结构用于返回本机的Winsock系统实现的信息。该结构中WhighVersion和wVersion两个域,前者是系统支持的最高版本,后者是系统希望调用者使用的版本。
如果函数执行成功则返回0,否则返回错误码。如果ws2_32.dll尚未初始化,则无法调用WSAGetLastError。
(2) WSAGetLastError
函数WSAGetLastError的定义格式如下。
- int WSAGetLastError(void);
本函数返回上次发生的网络错误。当一特定的Windows Sockets API函数指出一个错误已经发生时,本函数就应被调用来获得对应的错误代码。
在一个非占先的Windows环境下,WSAGetLastError()只用来获得Windows Sockets API错误。在占先环境下,WSAGetLastError()将调用GetLastError()来获得所有在每线程基础上的Win32 API函数的错误状态。为了提高可移植性,应用程序应在调用失败后应立即使用WSAGetLastError()。