WSAStartup
函数是 Windows Sockets API 的初始化函数,它用于初始化 Winsock 库。以下是 WSAStartup
函数的一些关键点:
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
-
wVersionRequested
:指定所请求的 Winsock 版本。通常使用MAKEWORD(major, minor)
宏,其中major
和minor
分别表示请求的主版本号和次版本号。 -
lpWSAData
:指向WSADATA
结构的指针,用于接收初始化信息。 -
返回值:如果函数调用成功,返回 0;否则,返回错误代码。
调用 WSAStartup
函数是使用 Winsock 库的第一步,它告诉操作系统我们要使用的 Winsock 版本,并初始化库的状态。在使用 Winsock 函数之前,通常需要在程序开始时调用一次 WSAStartup
,在程序结束时调用一次 WSACleanup
函数来释放资源。
在初始化成功后,WSAStartup
将填充 WSADATA
结构,其中包含了有关 Winsock 状态的信息,例如所支持的最高版本、实际使用的版本等。这些信息可能对程序的运行时行为有影响。
以下是一个示例:
#include <stdio.h>
#include <winsock2.h>
int main() {
// 初始化Winsock
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
printf("WSAStartup failed.\n");
return 1;
}
// 使用 Winsock 库的其他功能
// 清理 Winsock 库资源
WSACleanup();
return 0;
}
请注意,WSAStartup
和 WSACleanup
应该成对出现,而且 WSACleanup
应该在不再使用 Winsock 库之前被调用,以确保释放相关资源。