面试题答案
一键面试WSAStartup函数作用
WSAStartup函数用于初始化Windows Sockets库,使得应用程序能够使用Windows Sockets API进行网络通信。在使用任何其他Windows Sockets函数之前,必须首先调用WSAStartup函数。
两个参数含义
- wVersionRequested:该参数指定应用程序所需使用的Windows Sockets规范的版本号。高位字节指定副版本号,低位字节指定主版本号。例如,若希望使用2.2版本的Windows Sockets规范,则该参数应设置为MAKEWORD(2, 2) 。
- lpWSAData:这是一个指向WSADATA结构的指针,该结构用于返回Windows Sockets实现的详细信息,包括实际加载的Windows Sockets库的版本号、描述信息、供应商信息等。
使用完Socket后正确清理相关资源
- 关闭套接字:使用closesocket函数关闭已经创建并使用的套接字。例如,若有一个套接字变量
sockfd
,则可以通过closesocket(sockfd)
来关闭该套接字。这将释放与该套接字相关的系统资源,如缓冲区等。 - 清理Windows Sockets库:调用WSACleanup函数来清理Windows Sockets库。在调用该函数后,应用程序将不能再使用任何Windows Sockets API函数,除非再次调用WSAStartup进行初始化。通常在应用程序退出前调用WSACleanup,以确保正确释放所有与Windows Sockets库相关的资源。例如:
// 假设已经初始化了Windows Sockets库
if (WSAStartup(MAKEWORD(2, 2), &wsaData) == 0) {
// 创建并使用套接字...
SOCKET sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd != INVALID_SOCKET) {
// 进行套接字操作
closesocket(sockfd);
}
WSACleanup();
}