专门写 Indy的书很少.只能在网上找了

解决方案 »

  1.   

    官网上有关于Indy的Demo
    去下了研究研究
      

  2.   

    谁有关于IDTCPCLIENT 和idtcpserver的文件传输入的详细代码?
    那谁有这方面的程序啊..能发给我吗?最好是自己写的..
    你们一般用什么来技术来网络编程啊,是直接用WINSOCKET APT吗?
      

  3.   

    TCP较UDP复杂一些,主要是要使用到线程通讯,管理同步等,如果允许的话使用UDP吧
    我对TCP 有一些了解,如果愿意我们可以联系。
      

  4.   

    //客户端
    procedure TForm1.BT2Click(Sender: TObject);
    var
      SResponse: string;
      fStr:TFileStream;
      fNum,i,imod:Integer;
      memStr:TMemoryStream;
      FileName:string;
      FileSize:integer;
    begin
      with IdTCPClient1 do
      begin
      idtcpclient1.Host:=edit1.Text;
     idtcpclient1.Port:=strtoint(edit2.text);
      Connect();
        while Connected do
      begin
          try
          // SResponse := UpperCase(ReadLn);
          //  if Pos('HELLO', SResponse) = 0 then
          //    Break;
            ProgressBar1.Visible := true;
            FileName := 'e:\11.txt';
            FileSize :=20;
            fStr := TFileStream.Create(FileName,fmOpenRead);
            iMod := fStr.Size mod FileSize;
            if iMod=0 then
            begin
              fNum := fStr.Size Div FileSize;
              iMod := FileSize;
            end
            else
              fNum := (fStr.Size Div FileSize)+1;
            ProgressBar1.Max := fNum;
            fStr.Position := 0;
            for i:=0 to fNum-2 do
            begin
              memStr := TMemoryStream.Create ;
              memStr.CopyFrom(fStr,FileSize);
              OpenWriteBuffer;
              WriteStream(memStr);
              CloseWriteBuffer;
              memStr.Free ;
              ProgressBar1.Position := i;
              Application.ProcessMessages ;
            end;
            memStr := TMemoryStream.Create ;
            memStr.CopyFrom(fStr,iMod);
            OpenWriteBuffer;
            WriteStream(memStr);
            CloseWriteBuffer;
            memStr.Free ;
            //ProgressBar1.Visible := false;
            fStr.Free ;
          finally
           Disconnect;
          end;
        end;
     end;
    end;
    //服务端
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    idtcpserver1.DefaultPort:=strtoint(edit1.text);
    idtcpserver1.Active:=true;
    button1.Enabled:=false;
    showmessage('服务器成功启动');
    end;
    procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
    var
      FStr,aMemStr:TMemoryStream;
    begin
      with AThread.Connection do
      begin
       statusbar1.SimpleText:='正在接收文件';
       // WriteLn('Hello from Indy TCP Stream Server.');
        FStr := TMemoryStream.Create;
        try
            while Connected do
            begin
              aMemStr := TMemoryStream.Create ;
              ReadStream(aMemStr, -1, True);
              FStr.CopyFrom(aMemStr,aMemStr.Size);
              aMemStr.Free ;
            end;
            FStr.Seek(0, soFromBeginning);
            FStr.SaveToFile('e:\c.txt');
            FStr.Free ;
        finally
          Disconnect;
        end;
      end;   statusbar1.SimpleText:='接收完文件';end;