請問OnConnect與OnDisConnect的問題 |
缺席
|
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
//--------------------------------------------------------------------------- #include以上是Server端的程式,但是我用Client連線時,卻會在Server端ShowMessage兩次Client端的IP,這是什麼原因(我還沒按Client離線),照理來說應該只ShowMessage一次而已才對(PS:我使用INDY元件寫)以下是我的Client端的程式 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Client->Port=7777; Client->Host="127.0.0.1"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Client->Connect(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Client->Disconnect(); } //--------------------------------------------------------------------------- |
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
就我所知,Indy 的WinSocket元件基本上是Sync(同步)的,因此當您的Client端
與Server端建立連線並尋求服務後即會被離線(因為Server端的Thread已結束),
至於如何去Implement一個Indy TCP Server程式,我想您可以參考Indy提供的
Demo程式, TCPStreamClientServer, 在BCB的Demos\Indy下應該找得到. 至於TCP在實作上的Sync(同步)與ASync(非同步)的差異,就我本身有限的認知
上來說,在ASync模式下TCP Server 載明的IP:Port負責Listening Client端的
連線要求,並在接受(Accept)連線要求後,會另外產生一個Socket負責Service
這個Client端的連線,而所有額外產生用來服務個別Client連線的Socket在執行
時是共用同一個Thread的. 而Sync形式的TCP Sevver,用來服務Client端的Socket是個別獨立的Thread的. Note: 就是 Blocking & Non-Blocking 了. 個人觀點, 有誤請指正, TKS.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |