怎么总报No data to read错误呢?
var
  fStream : TFileStream;
if sCommand = 'TT' then
begin
  try
    fStream := TFileStream.Create('tt.txt',fmOpenWrite or fmShareDenyNone);
    AThread.Connection.OpenWriteBuffer;
    AThread.Connection.WriteStream(fStream);
    AThread.Connection.CloseWriteBuffer;
  finally
    fStream.Free;
  end;
end//客户端
procedure TfrmClient.Button1Click(Sender: TObject);
var
  ftmpStream : TFileStream;
  length:Integer;
begin
  IdTCPClient.Connect;
  IdTCPClient.WriteLn('TT');
  ftmpStream := TFileStream.Create('test.txt',fmCreate);
  while IdTCPClient.connected do
  begin
    length := IdTCPClient.ReadInteger;
    IdTCPClient.ReadStream(fTmpStream,length);
  end;
  FreeAndNil(fTmpStream);
end;

解决方案 »

  1.   

    Error: fStream := TFileStream.Create('tt.txt',fmOpenWrite or fmShareDenyNone);
    Corret: fStream := TFileStream.Create('tt.txt',fmOpenRead or fmShareDenyWrite);..........Serverprocedure TFormServer.TCPServerExecute(AThread: TIdPeerThread);
    var
      SComand: String;
      FStream: TfileStream;
    begin
      try
        SComand := AThread.Connection.ReadLn;
        if SComand = 'TT' then
        begin
          FStream := TFileStream.Create('c:\tt.txt',fmOpenRead or fmShareDenyNone);
          AThread.Connection.OpenWriteBuffer;
          AThread.Connection.WriteStream(FStream);
          AThread.Connection.CloseWriteBuffer;
          FStream.Free;
        end;
      finally
        AThread.Connection.Disconnect;
      end;
    end;
    ..............Clientprocedure TFormClient.ButtonSendClick(Sender: TObject);
    var
      FStream: TFileStream;
    begin
      TCPClient.Connect;
      FStream := TFileStream.Create('c:\test.txt',fmCreate);
      while TCPClient.Connected do
      begin
        try
          TCPClient.WriteLn('TT');
          TCPClient.ReadStream(FStream, -1, True);
          FStream.Seek(0, soFromBeginning);
        finally
          TCPClient.Disconnect;
          FStream.Free;
        end;
      end;
    end;