Note : Program bug in Winsocket/Win CE

有個朋友 用 WinCE 3.0 + EVB 開發一個 TCP/IP 的 Remote Program. 但是因EVB 的 WinSocket Component 是Single Thread 的在 網路斷線的情況下,會使得程式 Freezen 影響整個系統,因此就托我用EVC 4.0 寫了一個 multithread 的 DLL 給 EVB 作為 Connection Interface 但是卻發生一件奇怪的事情,當程式如果一開始正常的連線後,網路之後發生斷線,在短時間內系統可以重新連線,但如果網路持續斷線超過1個多小時之後,卻永遠也不能重新建立Connection,除非將程式重新啟動,在重新執行。
 
這個問題花了兩天的實驗與驗證發現 是在每次Re-connection 時 程式會重新 Allocate Socket 導致最後 System 內 Socket Resource 耗盡,因此程式改成只在程式啟動時 Allocate 一次Socket 就解決這個問題
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: