AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Über Indy versandte Dateien lassen sich nicht öffnen
Thema durchsuchen
Ansicht
Themen-Optionen

Über Indy versandte Dateien lassen sich nicht öffnen

Ein Thema von Benni0811 · begonnen am 30. Mär 2017 · letzter Beitrag vom 30. Mär 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benni0811

Registriert seit: 26. Sep 2016
25 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 11:15
Hallo,

ich habe ein Programm geschrieben, mit dem man Dateien von einem Indy-Tcp-Client an einen Indy-Tcp-Server senden kann.

Sender:
Delphi-Quellcode:
procedure TForm2.SendButtonClick(Sender: TObject);
Var FStream:TFileStream;
begin
    FStream := TFileStream.Create(filename, fmOpenRead);
    with IdTcpClient1 do begin
        Connect;
        Socket.Write(FStream);
        Disconnect;
    end;
end;
Empfänger:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
Var
  FStream: TFileStream;
  SizeOfIncomingStream: Integer;
begin
    FStream := TFileStream.Create(filename, fmCreate);
    with AContext.Connection do begin
        SizeOfIncomingStream := Socket.ReadInteger(true);
        Socket.ReadStream(fstream, SizeOfIncomingStream, false);
        Disconnect;
    end;
end;
Das Problem: Die versendeten Dateien lassen sich nicht öffnen! Ich habe ein Bitmap-Bild und eine .exe Datei verschickt. Kann mir jemand sagen was das Problem ist?


Die Fehlermeldungen:
Miniaturansicht angehängter Grafiken
error1.png   error2.png  

Geändert von Benni0811 (30. Mär 2017 um 11:22 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 11:18
.. vergleiche mal die Größe der Originaldatei mit der übertragenen Datei?

Du trennst die Verbindung nachdem ein oder mehrere Packete empfangen wurden.
Bist Du dir sicher das dann die gesamte Datei übertragen wurde?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benni0811

Registriert seit: 26. Sep 2016
25 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 11:20
Die Dateigröße ist die selbe, außerdem laufen beide Programme auf einem Computer.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 11:23
Zeig mal den Code, mit dem du die Datei tatsächlich liest/schreibst.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benni0811

Registriert seit: 26. Sep 2016
25 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 11:25
Passiert das nicht in dem Code den ich schon geschickt habe?
Im Programmcode wird sonst nur der Server aktiviert.
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#6

AW: Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 11:37
ich würde mir die empfangene Datei mal ansehen, wenn die Größe stimmt
z.b. mit:
HxD - HexEditor
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 11:41
Hinter FStream := TFileStream.Create(filename, fmCreate); bitte mal mit FStream.Position := 0; probieren.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.157 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 11:43
1. Warum liest du in deinem Server erst einen Integer raus wie lang der Stream angeblich sein soll? Den schreibst du in deinen Button1Click doch auch nicht rein! Einfach weglassen und alles lesen

2. Mach den FileStream auch wieder zu am Schluss!


Delphi-Quellcode:
procedure TForm10.Button1Click(Sender: TObject);
var
   FStream:TFileStream;
begin
   FStream := TFileStream.Create(fileIn, fmOpenRead);
   try
      IdTcpClient1.Connect();
      IdTCPClient1.Socket.Write(FStream);
      IdTCPClient1.Disconnect();
   finally
      FStream.Destroy();
    end;
end;


procedure TForm10.IdTCPServer1Execute(AContext: TIdContext);
const
   fileOut = 'x:\zipfile_out.zip';
Var
   FStream: TFileStream;
begin
    FStream := TFileStream.Create(fileOut, fmCreate);
    try
       AContext.Connection.Socket.ReadStream(fstream);
       AContext.Connection.Disconnect();
   finally
      FStream.Destroy();
    end;
end;

So funktioniert das bei mir ohne Probleme...
  Mit Zitat antworten Zitat
Benni0811

Registriert seit: 26. Sep 2016
25 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 12:23
Also mein Code sieht jetzt so aus:

Sender:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
Var FStream:TFileStream;
begin
    FStream := TFileStream.Create(filename, fmOpenRead);
    with IdTcpClient1 do begin
        Connect;
        Socket.Write(FStream);
        Disconnect;
    end;
    FStream.Destroy;
end;
Empfänger:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
Var
  FStream: TFileStream;
begin
    FStream := TFileStream.Create(filename, fmCreate);
    FStream.Position := 0;
    with AContext.Connection do begin
        Socket.ReadStream(fstream);
        Disconnect;
    end;
    FStream.Destroy;
end;
Die Dateien lassen sich aber immernoch nicht öffnen. Ich habe die Dateien auch mit HxD-HexEditor geöffnet und sie sind unterschiedlich. Außerdem habe ich mal eine .txt-Datei verschickt, da hat alles perfekt funktioniert.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.157 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Über Indy versandte Dateien lassen sich nicht öffnen

  Alt 30. Mär 2017, 12:29
Komisch. Hast du eine Beispiel-Datei die nicht funktioniert? Und vielleicht einmal dein komplettes Projekt? Nicht dass sich da noch etwas drin versteckt das man nicht vermutet...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz