Re: 請問一個Winsock問題

看板Programming作者時間18年前 (2006/07/13 13:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
"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()); 你可以開工做管理員並把相關的欄位打開看看跑的結果.
文章代碼(AID): #14jThN00 (Programming)
文章代碼(AID): #14jThN00 (Programming)