Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [Indy10] Binärdaten übertragen (https://www.delphipraxis.net/83147-%5Bindy10%5D-binaerdaten-uebertragen.html)

Zacherl 28. Dez 2006 11:38


[Indy10] Binärdaten übertragen
 
Hi,

ich möchte von einem IdTCPClient einen mit CompressBuf komprimiereten String vom Server schicken. Beim Server funktioniert leider ReadLn nicht, bzw ReadLn ließt immer nur einen Teil des Strings aus. Ich vermute mal, weil Sonderzeichen enthalten sind.
Kann ich diesen String anders senden? Eventuell über SendBuffer? Allerdings sollte der String beliebig lang sein drüfen.

Florian

marabu 28. Dez 2006 11:54

Re: [Indy10] Binärdaten übertragen
 
Hallo Florian,

du könntest auf der Client-Seite Write() und auf der Server-Seite ReadBytes() bzw. ReadStream() verwenden.

Freundliche Grüße

Zacherl 28. Dez 2006 12:15

Re: [Indy10] Binärdaten übertragen
 
Hi,

ich habe jetzt mal die Methode mit ReadStream implementiert. Dazu verwende ich den VCLStream von den Indys. Ist diese Methode genauso Rechenintensiv, wie das senden von normalen Strings, oder benötigt das eine höhere Rechenleistung?

Weil in meinem Projekt hatte ich zweitweise eine CPU Auslastung von 50% Prozent. Und die ging nur nicht höher, weil das Programm nur einen der 2 Kerne nutzt.

Florian

marabu 28. Dez 2006 12:23

Re: [Indy10] Binärdaten übertragen
 
Keine Ahnung. Die Volllast wurde vermutlich dadurch erzeugt, dass irgendwo innerhalb von ReadLn() ein busy wait loop verwendet wurde, während auf das EOLN gewartet wurde. Oft arbeitet die Empfangsseite wirtschaftlicher, wenn du vor jeder Sendung die Übertragungsmenge avisierst.

Zacherl 28. Dez 2006 13:58

Re: [Indy10] Binärdaten übertragen
 
Ok, danke für deine Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz