Re: 請問一個Winsock問題
"Martini,放兩顆橄欖" <Brad.bbs@bbs.wretch.cc> 撰寫於郵件新聞:4P7MbV$evy@bbs.wretch.cc...
> 我的程式是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());
你可以開工做管理員並把相關的欄位打開看看跑的結果.
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章