wsastartup((可以在单个过程中多次调用,只要winsock dll支持了请求的版本,并且呼叫wsastartup((和wsacleanup((和wsacleanup((。除此之外,还允许使用不同的Winsock版本的多个插座。(请参阅这篇文章:是否可以在过程中判断WSASTARTUP是否被调用?(
在这种情况下,这些不同的winsock版本如何共存?
例如,如果我要求使用特定的winsock版本来我的应用程序,而我的应用程序还加载了碰巧要求使用其他版本的第三方DLL怎么办?使用哪个版本,什么时候?
它在MS doc -
中说如果需要,应用程序可以多次调用WSASTARTUP 多次获得WSADATA结构信息。每个这样 呼叫,应用程序可以指定由 winsock dll。
最后一句话暗示,这些随后的呼叫实际上并未请求不同的winsock版本,只是获取了保存在wsadata
中的现有版本。
如果您想在程序中间更改Winsock版本,我想您可以调用WSACleanup
(需要根据需要多次(,然后使用新的WSAStartup