請問TServer/Client Socket元件的問題?? |
答題得分者是:RaynorPao
|
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 各位高手好,有個問題想請問一下,就是小弟在實做TServerSocket與ClientSocket的時候,為何在Server端的OnClientDisconnect事件下 Server端卻沒有動作產生 我在client端下了ClientSocket1->Close(),不是表示Client端已經斷線了嗎?? 那為何事件沒有觸發??這是BCB的bug嗎??還是Client端斷線寫法錯誤?? 請各位高手指教 willchen 你好: (1)請問你是怎麼寫的呢?? 是否確定程式碼有執行到該行?? ( > // >Address="192.168.1.1">Port=4000; ClientSocket1->Open(); } __fastcall TForm1::~TForm1() { ClientSocket1->Close(); } // Server __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ServerSocket1->Port=4000; ServerSocket1->Open(); } __fastcall TForm1::~TForm1() { ServerSocket1->Close(); } void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender, TCustomWinSocket *Socket) { AnsiString szRemoteIP=Socket->RemoteAddress; AnsiString szRemoteHost=Socket->RemoteHost; AnsiString szSocketHandle=IntToStr(Socket->SocketHandle); AnsiString szClientList=szRemoteIP "," szRemoteHost "," szSocketHandle; ShowMessage(szClientList " connect"); } void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender, TCustomWinSocket *Socket) { AnsiString szRemoteIP=Socket->RemoteAddress; AnsiString szRemoteHost=Socket->RemoteHost; AnsiString szSocketHandle=IntToStr(Socket->SocketHandle); AnsiString szClientList=szRemoteIP "," szRemoteHost "," szSocketHandle; ShowMessage(szClientList " disconnect"); }-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
喔..忘記告訴包子哥一點的是,就是連線之後我有使用OnClientRead的事件,有傳Stream的資料,那為何會在OnClientDisconnected會沒有動作??
我把OnClientRead的資料Post再板上好了
void __fastcall TForm1::DS2MMServerClientRead(TObject *Sender, TCustomWinSocket *Socket) { TMemoryStream *receivestream=new TMemoryStream(); ::Sleep(3); int receivebuf_len=Socket->ReceiveLength(); char *receivebuf=new char[receivebuf_len]; memset(receivebuf,0,receivebuf_len); Socket->ReceiveBuf(receivebuf,receivebuf_len); ::Sleep(3); receivestream->Write(receivebuf,receivebuf_len); receivestream->SaveToFile(CurrentDir "temp\\MACE140116039126.tmp"); ::Sleep(3); MM_Triple_DES->DecryptFileA(CurrentDir "temp\\MACE140116039126.tmp",CurrentDir "temp\\MACE140116036126.agn"); ::Sleep(3); DeleteFile(CurrentDir "temp\\MACE140116039126.tmp"); receivestream->Clear(); //clear //讀檔 receivestream->LoadFromFile(CurrentDir "temp\\MACE140116036126.agn"); int buf_len=(int)receivestream->Size; char *buf=new char[buf_len 1]; memset(buf,0,buf_len 1); receivestream->ReadBuffer(buf,buf_len); AnsiString fullagent=buf; Memo1->Text=fullagent; //fullagent為行動代理者完整內容 //Parser Agent開始 int left,right; //index //AgentID left=fullagent.Pos("小弟我有做過測試,寫一個簡單的例子來做測試,是沒問題的,但為何這裡就會出問題,我也找不到why,只能把所有的動作寫在OnClientRead的事件下,請問這是什麼問題?? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |