如果多个WSASTARTUP调用请求不同的Winsock版本发生会发生什么



wsastartup((可以在单个过程中多次调用,只要winsock dll支持了请求的版本,并且呼叫wsastartup((和wsacleanup((和wsacleanup((。除此之外,还允许使用不同的Winsock版本的多个插座。(请参阅这篇文章:是否可以在过程中判断WSASTARTUP是否被调用?(

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

例如,如果我要求使用特定的winsock版本来我的应用程序,而我的应用程序还加载了碰巧要求使用其他版本的第三方DLL怎么办?使用哪个版本,什么时候?

它在MS doc -

中说

如果需要,应用程序可以多次调用WSASTARTUP 多次获得WSADATA结构信息。每个这样 呼叫,应用程序可以指定由 winsock dll。

最后一句话暗示,这些随后的呼叫实际上并未请求不同的winsock版本,只是获取了保存在wsadata中的现有版本。

如果您想在程序中间更改Winsock版本,我想您可以调用WSACleanup(需要根据需要多次(,然后使用新的WSAStartup

"开始"

最新更新