全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:932
推到 Plurk!
推到 Facebook!

server vs client,可以s2c沒辦法c2s~why?why?why?

缺席
geminigreat
一般會員


發表:10
回覆:10
積分:4
註冊:2004-03-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-29 20:23:06 IP:163.17.xxx.xxx 未訂閱
請大家幫我測試一下,這支程式在單機可以執行傳檔,可是在兩台電腦執行時,就只能s2c不能c2s,或者是只能c2s不能s2c,都只能單方面傳送,請問各位問題出在那裡呢?謝謝。 這是> #> #> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #> #> >Address="127.0.0.1">Port=4000; ClientSocket1->Open(); gmsFile=new TMemoryStream; } __fastcall TForm1::~TForm1() { if(gmsFile) delete gmsFile; ClientSocket1->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ConnectClick(TObject *Sender) { msFile=new TMemoryStream; ClientSocket1->Socket->SendText("Connect"); Connect->Enabled=false; Disconnect->Enabled=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { ClientSocket1->Close(); delete msFile; } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { MYPACK mp; Socket->ReceiveBuf(&mp, sizeof(MYPACK)); AnsiString sz=(AnsiString)mp.szHeader; if(sz.SubString(1, 4)=="FILE") { if(sz=="FILE-START") { msFile->Size=mp.dwTotalDataSize; msFile->Position=0; } msFile->Write(mp.pbThisData, mp.dwThisDataSize); if(sz=="FILE-END") { msFile->Position=0; msFile->SaveToFile(mp.szFileName); msFile->Clear(); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::DisconnectClick(TObject *Sender) { Connect->Enabled=true; Disconnect->Enabled=false; ClientSocket1->Socket->SendText("Disconnect"); } //--------------------------------------------------------------------------- void __fastcall TForm1::TransferFile(TObject *Sender,AnsiString filename) { ProgressBar1->Visible =true; TMemoryStream *File=new TMemoryStream; File->LoadFromFile(filename); MYPACK my_pack; int i=0; int block=(File->Size%MAX_DATASIZE==0)? File->Size/MAX_DATASIZE: File->Size/MAX_DATASIZE 1; ProgressBar1->Max =block; for(i=0; iPosition ; if(i==0) { lstrcpy(my_pack.szHeader, "FILE-START"); } else if(i==block-1) { lstrcpy(my_pack.szHeader, "FILE-END"); } else { lstrcpy(my_pack.szHeader, "FILE-CONTINUE"); } lstrcpy(my_pack.szFileName,ExtractFileName(filename).c_str()); my_pack.dwPackTotal=block; my_pack.dwPackCount=i; my_pack.dwTotalDataSize=File->Size; my_pack.dwThisDataSize=((i 1)*MAX_DATASIZE>File->Size)? File->Size-i*MAX_DATASIZE: MAX_DATASIZE; File->Position=i*MAX_DATASIZE; File->Read(my_pack.pbThisData, my_pack.dwThisDataSize); ClientSocket1->Socket->SendBuf(&my_pack, sizeof(MYPACK)); Sleep(10); } delete File; ProgressBar1->Visible =false; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i=0;iExecute()) { Button1->Enabled=true; FileCount=OpenDialog1->Files->Count; for(int i=0;iFiles->Strings[i]); } } //--------------------------------------------------------------------------- < >< >
Roach
中階會員


發表:61
回覆:104
積分:98
註冊:2002-11-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-12 21:07:46 IP:211.20.xxx.xxx 未訂閱
程式好長喔 要不要試試用 indy 的元件傳 實作上方便很多喔 -------------- 試車總是問題多
geminigreat
一般會員


發表:10
回覆:10
積分:4
註冊:2004-03-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-24 01:55:21 IP:61.64.xxx.xxx 未訂閱
不好意思我不該把全部的程式都貼上來的 謝謝大大提供的意見 我的問題已經解決了
系統時間:2024-05-18 4:40:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!