Hallo,
Mir ist klar, dass ich nicht der Erste bin, der eine solche Frage stellt und ich kenne auch das Beispiel- Programm von DataCool.
Ich habe trotzdem eine Frage zum versenden von Datein. Allerdings nicht von Client zu Server, sondern umgekehert
Hier der Client- Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| procedure TForm1.btnReceiveClick(Sender: TObject); begin if IdTCPClient1.Connected then IdTCPClient1.Disconnect; IdTCPClient1.Port:=6666; IdTCPClient1.Host:='127.0.0.1'; try IdTCPClient1.Connect(3000); except end; end;
procedure TForm1.IdTCPClient1Connected(Sender: TObject); var FStream: TFileStream; FName: String; Dir: String; begin Dir:=Edit1.Text; if(DirectoryExists(Dir)) then begin FName:=IdTCPClient1.ReadLn; FStream := TFileStream.Create(Dir+FName,fmOpenWrite or fmCreate); FStream.Position:=0; try IdTCPClient1.ReadStream(FStream, -1, true); Memo1.Lines.Add(IntToStr(Round(FStream.Size/1024/1024))+' MB'); finally FStream.Free; IdTCPClient1.Disconnect; end; end else begin end; end; |
Und der Server:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread); var FStream: TFileStream; FName: String; begin FName:=Edit1.Text; FStream := TFileStream.Create(FName, fmOpenRead); FStream.Position:=0; AThread.Connection.OpenWriteBuffer; try AThread.Connection.WriteLn(ExtractFileName(FName)); AThread.Connection.WriteStream(FStream, true, true, 0); AThread.Connection.CloseWriteBuffer; AThread.Connection.Disconnect; except AThread.Connection.CancelWriteBuffer; end; FStream.Free; end; |
Die Dateien kommen zwar an- teilweise sogar komplett- an, aber exe Files z.B. lassen sich nicht ausführen (und das Icon fehlt). Kann mir jemand meinen Fehler sagen??
Danke für jede Hilfe, LG, Michi