如何關閉多于的冗餘連接?關于TIDTCPServer的。 |
答題得分者是:careychen
|
zhgwbzhd
一般會員 發表:10 回覆:32 積分:18 註冊:2008-07-24 發送簡訊給我 |
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
HI, 我是這樣子寫的,您參考一下
Indy 9 [code delphi] var I: Integer; List: TList; begin with IdTCPServer1.Threads do begin List := LockList; try try for I := List.Count-1 downto 0 do TIdPeerThread(List[I]).Connection.Disconnect; except end; finally UnlockList; end; end; end; [/code] Indy 10 [code delphi] var I: Integer; List: TList; begin with IdTCPServer1.Contexts do begin List := LockList; try try for I := List.Count-1 downto 0 do TIdContext(List[I]).Connection.Disconnect; except end; finally UnlockList; end; end; end; [/code] 不過,請注意一項事情 此項方式會觸發 IdTCPServer 的 OnDisconnect 事件,如果裡面也有寫類似上面的 LockList 的話 將會造成互相咬死的狀況哦~~,你的程式就會出現白白一片了!! ===================引 用 zhgwbzhd 文 章=================== IdTCPServer是不是已經記錄了他目前的所有鏈接? 我會在某時全部清空這些鏈接。 我覺得是不是可以直接通過他的某些成員就可以讀到這些鏈接。之后關閉他們。 目前我採用的方法是用一個列錶,在connect時,記錄下來,在disconnect時刪除。但是會佔用一些資源。 另外在多CPU的機器上,在ADD或者Delete時可能會出問題的,這個如何避免?? 不知道有沒有更好的方法? 謝謝各位!
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-09-28 14:59:14, 註解 無‧
|
zhgwbzhd
一般會員 發表:10 回覆:32 積分:18 註冊:2008-07-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |