關於winsock的問題 |
答題得分者是:microbean
|
totodog
一般會員 發表:13 回覆:3 積分:3 註冊:2003-05-29 發送簡訊給我 |
|
microbean
初階會員 發表:1 回覆:43 積分:38 註冊:2004-04-09 發送簡訊給我 |
WSAStartup 的功用 在於動態的載入 WS2_32.DLL
所以 你只需要在整個程式中, 呼叫一次 WSAStartup
, 相對的 呼叫一次 WSACleanup 就可以了 但是如果 程式呼叫 多次 WSAStartUp 會發生什麼事呢 ?
WSAStartUp 有一個類似 COM 的 Instance Counter .
如果你多次呼叫 他就會多次的產生 Instance .
但是如果你呼叫了 WSACleanup , 他會參考 counter 自動的幫你
處理這些 instance 或釋放. 所以你可以多次的呼叫 WSAStartUp , 然後只呼叫一次 WSACleanup ,
但最佳的狀態 還是呼叫一次 WSAStartUp , 結束時 , 再呼叫一次
WSACleanup . 也許你會看到有人的 function 裡面一開始就呼叫 WSAStartUp
然後 function 結束時, 在呼叫一次 WSACleanup .
這種寫法, 除了觀念不是很清楚外 , 另外有一個目的. 因為 winsock 程式中的 resourece 控制並不容易 ,
有的人會使用 WSACleanup , 去清除所有該次的 winsock
resource .
這可以避免掉 resouce 處理不當的情形. 但以一個完整的 winsock 程式來說 ,並不需要這樣呼叫. 所以你可以在 Form Create 呼叫一次 startup , 在
Form Close 呼叫一次 cleanup . 所以如果你的程式只有一個 process , 你只要
呼叫一次就可以了 , 並不需要隨著 socket 的建立
而建立 _= 沒事就 winsock 一下 =_
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |