如果一个进程中发生多个请求不同WinSock版本的WSAStartup调用,该怎么办?

时间:2019-05-08 05:23:24

标签: windows winsock2 wsastartup windows-socket-api

只要WinSock dll支持所请求的版本,并且可以平衡对WSAStartup()和WSACleanup()的调用,就可以在单个进程中多次调用

WSAStartup()。 除此之外,还允许使用不同WinSock版本的多个套接字。 (请参阅此帖子:Is it possible to tell if WSAStartup has been called in a process?

在这种情况下,这些不同的WinSock版本如何共存?

例如,如果我请求为我的应用程序使用特定的WinSock版本,并且我的应用程序还加载了碰巧要求使用其他版本的第三方dll,该怎么办?使用什么版本,何时使用?

1 个答案:

答案 0 :(得分:0)

它在MS doc-

中说

如果需要,应用程序可以多次调用WSAStartup 多次获取WSADATA结构信息。在每个这样的 调用,应用程序可以指定受支持的任何版本号 Winsock DLL。

最后一句话意味着,这些后续调用实际上并不需要其他Winsock版本,而只是获取保存在wsadata中的现有版本。

如果您想在程序中间更改Winsock版本,我想您可以调用WSACleanup(根据需要多次),并使用新的WSAStartup“重新开始” < / p>