看板Programming
标 题Re: 请问一个Winsock问题
发信站SEEDNet News Service (Thu Jul 13 21:19:18 2006)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!feeder.seed.net.tw!news.see
"Martini,放两颗橄榄" <
[email protected]> 撰写於邮件新闻:
[email protected]...
> 我的程式是server-client架构,
>
> server在每个client连线时,会再另外开一个socket和client传资料,
>
> 并且开一个thread将这个socket传进thread中,
>
> thread结束後确实将socket关闭.....
>
> 但问题来了,我的socket拿到的descriptor值会越来越大...
>
> winsock中的socket descriptor是无号整数,照理说应该只到65535吧,
>
> 可是我的socke拿到的descriptor值却一直增加,
>
> 很多已用过然後关闭的socket descriptor就不会再拿到了,但有的就会,
>
> 整个程式跑下来一天,socket descriptor值已经到50几万了,
>
> 不知道再这样run下去会不会有问题,
>
> 想请问高手们是否知道这个原因呢,谢谢回答
>
>
> PS:我是用VC++ 6.0 , MFC
你是用_beginthreadex产生新的thread,然後把socket id丢过去
,透过id去send or recv吗? 理论上你正常closesocket之後,socket
id会被释放,我比较怀疑的是你如果是用_endthrreadex()来结束
thread的话,没有同时释放那个thread handle(使用closehandle());
你可以开工做管理员并把相关的栏位打开看看跑的结果.