ClientSocket1Read收到資料缺少 |
缺席
|
show
初階會員 發表:57 回覆:48 積分:31 註冊:2003-05-24 發送簡訊給我 |
我要實現LDAP中Fetch DNs部分...
我用wireshark錄到LDAP Browser中Fetch DNs的封包內容 我就模擬送這些封包... 在LDAP送回結果這段,因為長度很大,所以我發現ClientSocket1Read會被觸發兩次,一次長度44,一次長度57,比對封包內容44跟57中間還是漏掉很多 我查詢一些歷史資料...似乎很多人遇到,但我還是看不懂大家最後怎解決...有人說分段收...但我不太瞭解怎樣分段收,Socket->ReceiveBuf(buffer,len);不是已經全部收下來了嗎? 以下是code... [code cpp] void __fastcall TForm1::ClientSocket1Connect(TObject *Sender, TCustomWinSocket *Socket) { //bindRequest Byte *bf=new Byte[14]; bf[0]=0x30; //....中間省略 bf[13]=0x00; Socket->SendBuf(bf,14); Sleep(1000); Memo1->Lines->Add("bindRequest"); delete bf; } //-------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { Byte len=Socket->ReceiveLength(); Memo1->Lines->Add("長度:" IntToStr(len)); Byte *buffer=new Byte[len]; Socket->ReceiveBuf(buffer,len); //bind成功,送出request if(buffer[15]==0x0A && buffer[16]==0x01 && buffer[17]==0x00 ) { Memo1->Lines->Add("searchRequest(2)"); Byte *bf=new Byte[55]; bf[0]=0x30; bf[1]=0x35; bf[2]=0x02; //........中間省略 bf[54]=0x73; Socket->SendBuf(bf,55); Sleep(1000); delete bf; } //LDAP server送回結果 if( buffer[00]==0x30 && buffer[01]==0x84 && buffer[02]==0x00 && buffer[03]==0x00 && buffer[04]==0x00 && buffer[05]==0xc3 ) //印出內容 for(int i=0; i //result1=buffer[i]; result2=String(IntToHex(buffer[i],2)); //Memo1->Lines->Text=Memo1->Lines->Text result1; Memo1->Lines->Add(result2); //Memo1->Lines->Add(IntToStr(i) ":" IntToHex(buffer[i],2)); } [/code] |
show
初階會員 發表:57 回覆:48 積分:31 註冊:2003-05-24 發送簡訊給我 |
|
show
初階會員 發表:57 回覆:48 積分:31 註冊:2003-05-24 發送簡訊給我 |
|
shunchia63
高階會員 發表:26 回覆:141 積分:198 註冊:2007-05-22 發送簡訊給我 |
delphi LDAP http://cc.borland.com/Item.aspx?id=16879 or .NET System.DirectoryServices.DirectoryEntry(); System.DirectoryServices.DirectorySearcher(); 會比較好嗎?? |
show
初階會員 發表:57 回覆:48 積分:31 註冊:2003-05-24 發送簡訊給我 |
之前環境已經都是用BCB開發...所以沒辦法用delphi/.NET...
我之前也在找是否可以直接用現成function去呼叫...不過資料找不到,所以才用這種暴力方式硬上... 昨天換成Indy的TCPClient好像正常多了... ===================引 用 shunchia63 文 章=================== delphi LDAP http://cc.borland.com/Item.aspx?id=16879 or .NET System.DirectoryServices.DirectoryEntry(); System.DirectoryServices.DirectorySearcher(); 會比較好嗎?? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |