IdTCPConnect ReadStream有問題 |
缺席
|
parais
一般會員 發表:15 回覆:11 積分:5 註冊:2002-08-22 發送簡訊給我 |
有二個程式server & client client傳檔案給server,在client傳時先WriteLn("stream"),再WriteStream,而server在ReadLn=="stream"後再ReadStream
問題來了,..
1.不知server為何ReadStream後就不會執行下一行(等很久或斷線才會)
2.indy有很多read,write方法,不知其詳細正當時機用法,看了很多文章,也越來越亂,所以想請高人指點一下... server:(紅色為問題點)
void __fastcall TForm1::IdTCPServer1Execute(TIdPeerThread *AThread) { try{ AnsiString sy=AThread->Connection->Socket->Binding->PeerIP; AnsiString sz=AThread->Connection->ReadLn(LF,-2,-1); Memo1->Lines->Add(sy "received:" sz); if(sz=="stream") sendflag=true; else sendflag=false; if(sendflag) { TMemoryStream *RDStream=new TMemoryStream(); AnsiString a(""); AThread->Connection->ReadStream(RDStream,-1,false); RDStream->Read(a.c_str(), RDStream->Size); Memo1->Text=a; delete RDStream; sendflag=false; } }catch{ sendflag=false; } } client(比較沒問題,有用別的設備收過,正確) void __fastcall TForm1::Button3Click(TObject *Sender) { try{ Button3->Enabled=false; Button4->Enabled=false; if(IdTCPClient1->Connected()) if(OpenDialog1->Execute()) { TMemoryStream *TMS=new TMemoryStream(); TMS->LoadFromFile(OpenDialog1->FileName); TMS->Position=0; try{ IdTCPClient1->WriteLn("stream"); }catch(...){ if(ConnectFlag) Timer1->Enabled=true;//重新連線的timer return; } int tmplen=TMS->Size,sendtimes=0,fixlen=8000; sendtimes=tmplen/8000; do{ if(sendtimes==0)//切成8k { TMemoryStream *sd=new TMemoryStream(); sd->CopyFrom(TMS,TMS->Size - TMS->Position); IdTCPClient1->WriteStream(sd,true,false,sd->Size-sd->Position); sendtimes=-1; delete sd; } else if(sendtimes>0) { TMemoryStream *sd=new TMemoryStream(); sd->CopyFrom(TMS,fixlen); IdTCPClient1->WriteStream(sd,true,false,fixlen); delete sd; } }while(!sendtimes); delete TMS; } else if(ConnectFlag) Timer1->Enabled=true; }catch(...){ if(ConnectFlag) Timer1->Enabled=true; } }謝謝大家的指教 謝謝您花費寶貴時間回應!!
------
********************** ********************** |
louive
一般會員 發表:3 回覆:2 積分:1 註冊:2004-11-22 發送簡訊給我 |
|
ChangRicky
一般會員 發表:0 回覆:6 積分:6 註冊:2004-03-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |