VC++ socket多线程编程问题

现在在写一个多线程程序,每个线程定时进行UDP或者TCP通讯,比如5分钟。我想问一下,我可以在每个线程中都调用一次WSAStartup()和WSACleanup()吗?每... 现在在写一个多线程程序,每个线程定时进行UDP或者TCP通讯,比如5分钟。我想问一下,我可以在每个线程中都调用一次WSAStartup()和WSACleanup()吗?每个线程启动通讯的时间是一样的。
另外我想问下,如果我调用了WSAStartup()而没有调用WSACleanup()会怎样,系统会强制释放吗?多长时间后会强制释放?
谢谢。
展开
 我来答
百度网友bc61304
2014-10-28 · TA获得超过1902个赞
知道小有建树答主
回答量:875
采纳率:0%
帮助的人:566万
展开全部
WSAStartup()和WSACleanup()在主线程调用一次就行,一般在main函数调用。
不调用WSACleanup()在进程结束后系统会帮你回收资源。
建议还是调用WSACleanup(),写出程序看起来逻辑严谨。
更多追问追答
追问
因为的我的程序希望一直运行下去,除非关机。所以我在main()函数中调用了一次WSAStartup()后就没有调用WSACleanup(),但是我的程序在运行了54个小时之后所有socket通讯的线程都停了,刚好54个小时,不知道什么原因。

如果我没有调用WSACleanup(),一定时间之后系统不会强制回收资源吧?
追答
“每个线程定时进行UDP或者TCP通讯”——如果你每次进行UDP或者TCP通讯都要创建一个套接字的话,用完之后只要用close()释放就可以了。
所有的线程都停了是什么意思?线程正常结束?错误退出?还是阻塞在某个地方?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式