AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Image senden - Bin kurz vorm verzweifeln
Thema durchsuchen
Ansicht
Themen-Optionen

Image senden - Bin kurz vorm verzweifeln

Offene Frage von "PhilippW"
Ein Thema von PhilippW · begonnen am 26. Jun 2005 · letzter Beitrag vom 28. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
PhilippW

Registriert seit: 9. Jun 2005
10 Beiträge
 
#1

Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 20:30
Hallo!

Ich versuche jetzt schon seit Tagen ein ganz normales Bitmap mit den Client/Server-Komponenten zu versenden.
Das Bild soll vom Server verschickt werden und am Client ankommen.
Was ich nicht so ganz verstehe ist, dass ich das ganze bereits erfolgreich realisiert habe, allerdings beides zusammen in einem Programm (Server und Client befinden sich auf ein und der selben Form und der Server sendet das Bild übers Netzwerk zum eigenen Programm zurück).
Nun hab ich das ganze getrennt in jeweils ein eigenes Programm gesteckt und bin davon ausgegangen, dass es jetzt auch funktioniert, aber das tut es leider nicht.
Ich bekomme immer eine Access violation aber ein Bild kommt nicht an...
Das Programm befindet sich in der Anlage...

Ich hoffe, ihr könnt mir helfen das Problem zu lösen!

Mit freundlichen Grüßen

Philipp
Angehängte Dateien
Dateityp: zip netzwerk_bitmap_202.zip (413,5 KB, 30x aufgerufen)
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 20:34
Hallo,
such hier im Forum mal nach den besonderheiten vpn Sockets, da erfährst du z.B. das:
Wenn du eine Nachricht mit einem Socket versendest, kannst du nicht davon ausgehen, dass die Nachricht auch in einem Stück wieder ankomt, es passiert häufig, dass sie zerlegt wird.
Also musst du dafür sorgen, dass die Datei beim CLient wieder zusammengesetzt wird.
Viele Grüße, Benjamin
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 20:43
Hallo,
guck mal hier in der OpenSource spalte:
IMT - Chat (mit Source)
Das ist ein von mir programmierter Chat, der auch die Sockets benutzt, um Dateien (auch Bilder) zu verschicken. Diese Funktion ist ein TChatServer und TChatClient implementiert.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
PhilippW

Registriert seit: 9. Jun 2005
10 Beiträge
 
#4

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 20:47
Zitat von BenjaminH:
Hallo,
such hier im Forum mal nach den besonderheiten vpn Sockets, da erfährst du z.B. das:
Wenn du eine Nachricht mit einem Socket versendest, kannst du nicht davon ausgehen, dass die Nachricht auch in einem Stück wieder ankomt, es passiert häufig, dass sie zerlegt wird.
Ich hab das Forum und Google schon rauf und runter durchsucht aber nichts passendes gefunden...

Zitat von BenjaminH:
Also musst du dafür sorgen, dass die Datei beim CLient wieder zusammengesetzt wird.
Viele Grüße, Benjamin
Ich hab noch nicht so viel mit Streams senden und so gemacht...
Beim Senden von Strings kommt immer alles komplett an...
Kannst du mir erklären, wie man die Teile zuammenfügt?
  Mit Zitat antworten Zitat
PhilippW

Registriert seit: 9. Jun 2005
10 Beiträge
 
#5

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 20:51
Zitat von Florian Bernd:
Hallo,
Das ist ein von mir programmierter Chat, der auch die Sockets benutzt, um Dateien (auch Bilder) zu verschicken. Diese Funktion ist ein TChatServer und TChatClient implementiert.
Ich hab schon in einen anderen Programm, für welches ich auch die Bilder-senden Geschichte verwenden will, ne Menge mit TServerSocket und TClientSocket gearbeitet und das müsste ich dann umschreiben (ist nicht wenig)...
Aber die sind ja laut Beschreibung lediglich abgeleitet, das bedeutet doch dann, dass es auch mit den "normalen" Komponenten gehen müsste, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 20:55
So, noch mal gesucht:

Das hier muss ins OnClientRead Ereigniss des TClientSockets:

Delphi-Quellcode:
Var
  a: array[0..4096] of byte;
  i: integer;
  s: string;
  fs: tfilestream;
begin
  If FDaten = false then
  begin
    s := Socket.ReceiveText;
    If Copy(s, 1, 5) = 'Datenthen
    begin
      Delete(s, 1, 5);
      try
        FSize := StrToInt(s);
        FDaten := true;
        FStream.Clear;
      except
        
      end;
    end;
  end
  else
  begin
    i := Socket.ReceiveBuf(a, 4096);
    FStream.Write(a, i);
    FPos2 := FPos2 + i;
    // hiermit prozent ermitteln: floattostr(Round((fpos2 / fsize)*100));
    If FPos2 >= FSize then
    begin
      FDaten := false;
      FStream.Position := 0;
      FPos2 := 0;
      
    end;
  end;
FDaten: boolean;
FSize: int64;
Fpos2: int64;
FStream: TMemoryStream;

als globale Veriablen definieren!

und das hier muss zum Senden benutzt werden:

Delphi-Quellcode:
procedure SendFileToClient(clientindex: integer; filename: string);
Var i: integer; Buf: Pointer;
begin
  fstream.LoadFromFile(filename);
  Buf := FStream.Memory;
  serversocket1.Socket.connections[clientindex].SendText('Daten'+inttostr(fstream.size));
  sleep(sleeptime+50);
  serversocket1.Socket.connections[clientindex].SendBuf(buf^, fstream.Size);
end;
ClientIndex gibt die Nummer des Clients an.

Florian

PS: Ja, es geht auch mit den normalen Komponenten.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
PhilippW

Registriert seit: 9. Jun 2005
10 Beiträge
 
#7

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 21:16
Es funktioniert leider immer noch nicht...
Ich hab das Programm so umgeschrieben, dass es den Stream nicht aus einer Datei, sondern aus dem Bild selber (wie in meinem Versuch) erhällt.
Als ich das ganze gestartet hab, kam auf der Client-Seite wieder diese Zugriffs-Verletzung und mir ist aufgefallen, dass der Stream nicht "Created" wurde. Das hab ich geändert und jetzt kommt ein "Stream Read Error"...
Das kann doch nicht so kompliziert sein, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 21:44
Also: im OnCreate Ereigniss des Formulars:

  FStream := TMemoryStream.Create; zum speichern des Bildes im Stream:

Delphi-Quellcode:
  FStream.Clear;
  Image.Picture.SaveToStream(FStream);
Zum auslesen des Bildes bei dieser Stelle:

Delphi-Quellcode:
  If FPos2 >= FSize then
    begin
      [b]Image1.Picture.LoadFromStream(FStream);[/b]
      FDaten := false;
      FStream.Position := 0;
      FPos2 := 0;
    end;
Müsste gehen!

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
PhilippW

Registriert seit: 9. Jun 2005
10 Beiträge
 
#9

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 21:55
Jetzt kommt wieder die AccessViolation...
Ich krieg das irgendwie nicht auf die Reihe...
Kannst du mir ein komplettes Programm schicken, in welchem der Stream aus einem Image geladen und beim Client wieder in ein Image gepackt wird?
  Mit Zitat antworten Zitat
Benutzerbild von svenwel.de
svenwel.de

Registriert seit: 8. Apr 2005
Ort: Neunkirchen
23 Beiträge
 
Delphi 7 Personal
 
#10

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 22:04
http://www.dcw-group.net/index.php?m..._dateitransfer
Sven W.
  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 21:38 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