Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Sockets: Dateien (https://www.delphipraxis.net/92429-sockets-dateien.html)

napsterxx 19. Mai 2007 16:37


Sockets: Dateien
 
Also ich wollte das der Client einen Screenshot macht (funktioniert) und lädt diesen in ein Bild. Dieses Bild will ich jetzt dem Server schicken. Und dort ebenfalls in ein TImage laden. Bloß wie? Suche ... nunja sehr viel bloß *nix_raff*^^ nun ja wäre jemand so nett?

Apollonius 19. Mai 2007 17:14

Re: Sockets: Dateien
 
Wenn du das Bild (als Bitmap) schon hast:
Delphi-Quellcode:
//Client
str:=TMemoryStream.create;
MeinBitmap.savetostream(str);
Clientsocket1.sendstream(str);
//str nicht freigeben, das übernimmt der Socket
Und für das Empfangen auf Serverseite empfehle ich dir einfach mal die Suche...

Muetze1 20. Mai 2007 20:55

Re: Sockets: Dateien
 
Das wird so nicht klappen, da SendStream() afair von der aktuellen Position des Streams aus sendet. Von daher vorher die Eigenschaft Position des Streams str auf 0 setzen.

napsterxx 6. Jun 2007 21:52

Re: Sockets: Dateien
 
kk das geht und empfangen?

Muetze1 6. Jun 2007 22:31

Re: Sockets: Dateien
 
Mit ReceiveBuf() jedesmal im ClientRead alle vorhandenen Daten auslesen und in einen Stream schreiben bis du alles empfangen hast. Dann kannst du das Bild anzeigen...

napsterxx 6. Jun 2007 22:33

Re: Sockets: Dateien
 
un woher weiß ich wann ich es anzeigen kann?

Muetze1 7. Jun 2007 09:51

Re: Sockets: Dateien
 
Das hängt davon ob, wie du dein Protokoll definierst. Die Sockets übertragen einfach nur Daten und kümmern sich nicht um den Inhalt. Wenn du also unterschiedliche Daten/Informationen übertragen willst, brauchst du eine festgelegte Ordnung/Struktur - sprich: Protokoll. Also einfachstes Protokoll dazu: Übertrage die Grösse der folgenden Daten und dann die Daten. Wenn die empfangenen Daten den vorher gesendeten Umfang erreicht haben, dann hast du alles.

napsterxx 7. Jun 2007 11:43

Re: Sockets: Dateien
 
:wiejetzt: verstehe das nicht. Ich arbeite mit einem Protokoll zwar einem sehr kleinen aber immerhin^^

Apollonius 7. Jun 2007 12:06

Re: Sockets: Dateien
 
Am einfachsten ist Folgendes: Du schreibst dem Empfänger zu Beginn einfach die Größe des Streams:
Delphi-Quellcode:
clientsocket1.socket.sendbuf(str.size,sizeof(int64));
Der Server weiß, dass zuerst eine Größenangabe ankommt, und speicherst diese in einer Variablen.

Und außerdem liefere ich hier mal ein paar Schlüsselworte für die Suche: Hier im Forum suchenStream Socket. Es wird ziemlich viel erklärt, allerdings meiner Meinung nach nicht immer verständlich, also keine falsche Scham beim Fragenstellen!
Hoffe, geholfen zu haben
Apollonius


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 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