我有一个c ++ win32程序,它使用套接字从服务器下载一些数据.
在Windows上使用套接字之前,必须调用WSAStartup.MSDN说:"每次成功调用WSAStartup都必须调用WSACleanup.只有最后的WSACleanup函数调用才能执行实际的清理."
对我来说最简单的方法是每次从服务器下载数据时都调用WSAStartup/WSACleanup.大多数情况下,一次只有一个连接,因此WSACleanup将执行实际的清理.
这就是为什么我想知道WSAStartup和WSACleanup的成本是多少?我的意思是进行实际清理.如果与整个套接字连接相比,对WSAStartup和WSACleanup的调用只持续很短的时间,那么我可以使用简单的方法.如果没有,我应该在退出程序时注意调用WSACleanup.
WSAStartup()加载必要的dll.但是如果已经加载了dll,WSAStartup()只会增加一个计数器.WSACleanup()减少计数器并在计数器达到零时释放dll.
您应该在退出应用程序之前在应用程序的init函数中调用WSAStartup(),并调用WSACleanup().