AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi dateien per sendstream empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

dateien per sendstream empfangen

Ein Thema von Karg · begonnen am 17. Jun 2007 · letzter Beitrag vom 17. Jun 2007
Antwort Antwort
Karg

Registriert seit: 5. Jun 2007
36 Beiträge
 
#1

dateien per sendstream empfangen

  Alt 17. Jun 2007, 09:46
hi alle zusammen,
ich habe folgendes problem:
ich habe ein bild und dieses bild sende ich per sendstream an den server.
beim server werden auch daten übermittelt, nur wenn ich das bild am ende wieder freigeben möchte, dann gibt es immer eine fehlermeldung und das bild ist nur halb fertig.

Deswegen meine frage: wie kann ich dem bild sagen, wann es fertig ist????

hier mal code:
Delphi-Quellcode:
client:
senden:=Tfilestream.create('c:\windows\screen_neu.jpg',fmopenread);
form1.ClientSocket1.Socket.SendStream(senden);
Delphi-Quellcode:
server:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
              var screenshot:tjpegimage;
                  buffer:pointer;
                  i:integer;

begin
i:=socket.ReceiveLength;
getmem(buffer,i);
  try
     socket.ReceiveBuf(buffer^,i);
     input_bild.Write(buffer^,i);
  finally
         freemem(buffer);
        end;
if input_bild.size=i
   then input_bild.free;
end;
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: dateien per sendstream empfangen

  Alt 17. Jun 2007, 11:14
Zitat:
Delphi-Quellcode:
if input_bild.size=i
   then input_bild.free;
Du gibst den Stream hiermit praktisch in jedem Durchlauf frei. Du solltest zu Beginn der Übertragung eine Längenangabe senden, also einfach Clientstream.size, diese dann in einer globalen Variablen speichern und prüfen, ob die Größe des Empfangsstreams gleich dieser Größe ist. Die Daten werden ja nicht in einem Rutsch übertragen, sodass du mehrfach Daten an den Stream anhängen musst.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Karg

Registriert seit: 5. Jun 2007
36 Beiträge
 
#3

Re: dateien per sendstream empfangen

  Alt 17. Jun 2007, 13:31
also erst mal danke für die antwort...
allerdings hab ich es immer noch nicht ganz hinbekommen.
Ich hab jetzt beim client die stream.size in einen string umgewandelt und sende diesen an den server.
Der server bekommt den text und und wandelt ihn in eine integer um. Diese integervariable bau ich jetzt folgendermaßen ein:
Delphi-Quellcode:
if input_bild.size =filesize
   then input_bild.Free;
Wenn ich das dann auprobiere bekomme ich immer eine fehlermeldung. Warum??? Was soll ich jetzt machen ???
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:20 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