線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1041
推到 Plurk!
推到 Facebook!

關於winsock的問題

答題得分者是:microbean
totodog
一般會員


發表:13
回覆:3
積分:3
註冊:2003-05-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-19 09:31:00 IP:61.220.xxx.xxx 未訂閱
請問一下: 當我們使用winsock來寫程式,一開始不是要先作 WSAStartup的動作。 那要是我程式中在不同階段各開啟一個socket我是不是每開一個socket 就得先做WSAStartup的動作,還是整個程式只需要作一遍即可ㄋ (我是寫個function來建立socket)
microbean
初階會員


發表:1
回覆:43
積分:38
註冊:2004-04-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-19 13:04:13 IP:210.58.xxx.xxx 未訂閱
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 一下 =_
系統時間:2024-04-18 11:42:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!