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

IdTCPClient 和IdTCPSERVER

尚未結案
bebehome123
一般會員


發表:13
回覆:4
積分:3
註冊:2004-11-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-24 12:20:28 IP:192.192.xxx.xxx 未訂閱
可否寫一個利用IdTCPClient 和IdTCPSERVER 來傳輸檔案的簡單範例 給我看.... 用MEMORYSTREAM 最主要是如何傳遞STREAM的部分(CLIENT和SERVER如何傳遞STREAM) 謝謝......... 我是初初初學者.....懇請幫忙
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-26 02:44:53 IP:219.68.xxx.xxx 未訂閱
bebehome123您好,請善用搜尋功能喔< > 以下這篇文章有您所要的< > 怎樣把一張JPEG放進byteArray內? http://delphi.ktop.com.tw/topic.php?topic_Id=39348 其中
 
我的電腦TCP CLIENT端        procedure DownLoadfile(xfn:string);
var xfile : TFileStream;
    sResp:string;
begin
   WITH idTCPClient1 do begin
      idTCPClient1.Port:=8888;         
      idTCPClient1.host:=10.10.1.1;     // PC-A的ip
      idTCPClient1.Connect ;
      while Connected do begin
         xfile:= TFileStream.Create(xfn,fmCreate or fmShareExclusive); 
         //與server端建立連線成功之後,先建立一個filestream準備接收檔案
         try
            sRESP:=READLN; 
            if sRESP<>'JAPHEN'S TCP Peer to Peer Sharing' then
               break;
            // 如果對方回答我的不是共同的語言,就中斷所有的連接動作
            writeln('GETINGFILE_' + xfn); // 向PC-A要求我要的檔案
            readstream(xfile,-1,true);
         finally
            Disconnect ; // 總算完成(依檔案大小來決定所花時間),中斷連接
            xfile.free;  // 關閉檔案(這時也寫入完成了,檢查一下是不是接收到了吧)
         end;
      end;
   end;
end;        server端(PC-A,裡面有我要的檔案的電腦)        procedure TMainForm.IdTCPServer1Execute(AThread: TIdPeerThread);
VAR SREQ ,prefile: STRING ;
    FStream :  TFileStream;
begin
      ATHREAD.Connection.WriteLN('JAPHEN'S TCP Peer to Peer Sharing'); 
      //連線建立後,回傳個訊息給client端
      try
         SREQ:=READLN;
         if copy(SREQ,1,11)='GETINGFILE_' then begin
            // 如果對方跟我要檔案的話,往下繼續
            prefile := copy(SREQ,12,length(SREQ)-11);
            if fileexists(prefile) then begin //檢查一下檔案存不存在
               try
                  FStream:=TFileStream.Create(prefile,fmOpenRead or fmShareDenyNone);
                  //打開要送出去的檔案
                  fstream.Seek(0,soFromBeginning);
                  //檔案指標指到最開頭
                  ATHREAD.Connection.openwritebuffer; // 打開TCP WRITEBUFFER
                  ATHREAD.Connection.writestream(fStream); //把檔案FSTREAM直接丟出去,沒限制大小
                  ATHREAD.Connection.Closewritebuffer;//關閉TCP WRITEBUFFER(全都送完了)
               finally
                  freeandnil(FStream);
               end;
            end;
         end;
      finally
         ATHREAD.Connection.disconnect ;
      end;
   END;
end;    
GOOD LUCK <> <> <> < > <> < class="code"> =程式是一種藝術 也是訓練自己的分析規劃= =是段落分明 或是雜亂無章= =是一言以敝 或是廢話連篇= =是一目了然 或是艱深難懂= 體會這份藝術 您會了解另一份喜悅與成就
系統時間:2024-07-03 4:29:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!