I am using tidtrivialftp server n tidtrivialftp for p2p file transfer and it works for text file transfer but when i tried docx and pdf file though file is transmitted but it cannot be opened or as PDF says its damaged.As this link says http://www.swissdelphicenter.ch/article_data/ch20.pdf
"The TIdTrivialFTP client is based on the Trivial File Transfer Protocol. This client can be used to connect to TFTP servers. TFTP is not for general file transfer, since it is a very lightweight file transfer protocol. It is usually limited to LANs and used for simple tasks such as uploading/downloading routing tables from routers. Due to the nature of this protocol, it is not recommended to use when authentication is required or any type of security in general is needed".
Isn't TIdTrivialFTP and TFTP different or the text above is same for both ?
here is the code
Client :
procedure TForm2.LoadClick(Sender: TObject);
begin
OpenDialog1.InitialDir := GetCurrentDir;
if OpenDialog1.Execute then
begin
Edit1.Text := OpenDialog1.FileName;
path := Edit1.Text; // save path for sending
end;
end;
procedure TForm2.sendClick(Sender: TObject);
var
size: Word;
index: Word;
buffer: TIdBytes;
begin
stream := TFileStream.Create(path,fmOpenRead or fmShareDenyWrite);
try
setlength(buffer, stream.Size);
stream.ReadBuffer(buffer, Length(buffer));
stream.Position := 0;
Client1.Put(stream, ExtractFileName(path));
finally
stream.Free;
end;
end;
procedure TForm2.client1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
begin
Memo1.Lines.Add(IntToStr(AWorkCount));
end;
procedure TForm2.client1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
begin
Memo1.Lines.Add('Transmitting data...');
end;
procedure TForm2.client1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
Memo1.Lines.Add('Transfer complete...');
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
server.Create;
server.ThreadedEvent := True;
server.Active := True;
server.Bindings.Add.Port := 69;
Client1.Host := '';
Client1.Port := 69;
end;
Server:
procedure TForm2.serverWriteFile(Sender: TObject; var FileName: string;
const PeerInfo: TPeerInfo; var GrantAccess: Boolean; var AStream: TStream;
var FreeStreamOnComplete: Boolean);
var
FS: TFileStream;
begin
SaveDialog1.FileName := ExtractFileName(FileName);
if SaveDialog1.Execute then
begin
// let TIdTrivialFTPServer create the TFileStream internally...
FileName := SaveDialog1.FileName;
Memo1.Lines.Add('started writing files...');
// file1 := ExtractFileName(Filename);
{ Open file in WRITE ONLY mode }
FS := TFileStream.Create(TFTPPath + Filename,fmCreate or fmShareExclusive);
{ Copy all the data }
AStream := FS;
{ Set parameters }
FreeStreamOnComplete := True;
end
else
GrantAccess := False;
end;