调用AfxSocketInit后,是否需要调用 WSACleanup ? 请问:调用 AfxSocketInit() 成功后,程序结束前,是否需要调用 WSACleanup ? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序结束前,可以不调用,进程结束时,会释放所有资源的。如果你只是在程序中使用一下socket,然后,对socket 已不再需要,可以马上调用WSACleanup释放资源。 msdn 里对 AfxSocketInit 的例子里,没有调用WSACleanup查看 AfxSocketInit 源代码,核心也只是调用了 WSAStartup 而已。但 调用 WSAStartup 不是应该用 WSACleanup 释放么?为什么 msdn AfxSocketInit 例子里 不调用 WSAStartup ? 而且 msdn 里说的是:This function also ensures that WSACleanup is called for you before the application terminates. why? 用什么机制保证的? 利用了函数指针。其实你不用去管这么多的细节,反正这个函数会帮你完成WSACleanup的。 就算是利用函数指针,但也得至少调用两次相关函数啊。释放的动作,应该不是在AfxSocketInit 中实现的。我之所以关注,是因为想了解透彻。我不只用mfc编程,所以我想弄清楚 底层的事情以及mfc中实现的原理。 我在汇编页面下把断点设在WSACleanup的入口,发现在我手工调用的情况下,可以触发并断下来,但如果不手工调用,就触发不了。应该是没有调用WSACleanup,可能MS觉得反正进程退出就释放掉了,也就不再手工调用了。 _AFX_SOCK_STATE::~_AFX_SOCK_STATE(){ if (m_pfnSockTerm != NULL) m_pfnSockTerm();} 现在的it浮夸风啊 图片显示颜色问题 关于windows内部的数据结构 如何在一个Form中嵌入另一个程序? 关于WSAWaitForMultipleEvents的问题,来者有分 基于对话框的程序中系统生成的“确定”和“取消”按钮以及对话框右上角的关闭按钮有何区别? 《深入浅出MFC》中的一个问题 使用cserialport接受5ms一帧的数据包,丢数据包里字节 vc窗口问题 postMessage后,接收消息lParam参数值变化的问题 static dll和shared dll问题 在VS2005下用VC++开发串口程序,如何用消息监控串口数据??
查看 AfxSocketInit 源代码,核心也只是调用了 WSAStartup 而已。
但 调用 WSAStartup 不是应该用 WSACleanup 释放么?
为什么 msdn AfxSocketInit 例子里 不调用 WSAStartup ?
其实你不用去管这么多的细节,反正这个函数会帮你完成WSACleanup的。
我之所以关注,是因为想了解透彻。我不只用mfc编程,所以我想弄清楚 底层的事情以及mfc中实现的原理。
应该是没有调用WSACleanup,可能MS觉得反正进程退出就释放掉了,也就不再手工调用了。
{
if (m_pfnSockTerm != NULL)
m_pfnSockTerm();
}