标签: wsacleanup

WSAStartup和WSACleanup的成本是多少?

我有一个c ++ win32程序,它使用套接字从服务器下载一些数据.

在Windows上使用套接字之前,必须调用WSAStartup.MSDN说:"每次成功调用WSAStartup都必须调用WSACleanup.只有最后的WSACleanup函数调用才能执行实际的清理."

对我来说最简单的方法是每次从服务器下载数据时都调用WSAStartup/WSACleanup.大多数情况下,一次只有一个连接,因此WSACleanup将执行实际的清理.

这就是为什么我想知道WSAStartup和WSACleanup的成本是多少?我的意思是进行实际清理.如果与整个套接字连接相比,对WSAStartup和WSACleanup的调用只持续很短的时间,那么我可以使用简单的方法.如果没有,我应该在退出程序时注意调用WSACleanup.

sockets winapi tcp wsastartup wsacleanup

8
推荐指数
1
解决办法
5375
查看次数

WSACleanup和atExit

可以通过atExit函数注册WSACleanup吗?我们有几个应用程序可以在代码中的不同点终止,因此我们希望避免在代码中将WSACleanup放在任何地方.我们可以通过DllMain调用WSAStartup/WSACleanup,因为我们有一个所有这些应用程序都使用的dll.但是,Microsoft严格建议不要通过DllMain使用WSAStartup/WSACleanup,因为这会导致死锁.我们可以将WSAStarup移出DllMain,并在访问Windows套接字库之前在所有应用程序的代码中的某一点调用它.而且,只要我们调用WSAStartup,我们就想使用atExit函数来注册对WSACleanup的调用.有没有人有这种方法的经验?谢谢!

c++ winsock atexit wsastartup wsacleanup

6
推荐指数
1
解决办法
3171
查看次数

程序退出前是否需要调用WSACleanup

我有一个Windows套接字程序(XP及更高版本),该程序可以调用WSAStartupWSACleanup在程序退出之前是否需要调用?如果我不这样做,会不会有负面影响?特别是:

WSACleanup();
exit(0);
Run Code Online (Sandbox Code Playgroud)

不同于仅仅exit(0)。我意识到在Win16 WSACleanup上仍然会泄漏系统资源。

windows winsock2 wsastartup wsacleanup

5
推荐指数
0
解决办法
609
查看次数

标签 统计

wsacleanup ×3

wsastartup ×3

atexit ×1

c++ ×1

sockets ×1

tcp ×1

winapi ×1

windows ×1

winsock ×1

winsock2 ×1