Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy SendStream - seltsame Zeichen im Text (https://www.delphipraxis.net/93709-indy-sendstream-seltsame-zeichen-im-text.html)

Zacherl 10. Jun 2007 00:51


Indy SendStream - seltsame Zeichen im Text
 
Hey,

ich habe ein Client und ein Serverprogramm. Beim Clientprogramm läuft ein Thread, welcher mittels ReadStream(SS) immer weiter prüft, ob Daten ankommen. Dabei ist SS ein TStringStream.
Beim Serverprogramm wird im OnExecute Ereigniss mit ReadStream(SS) Daten ausgelesen.

Hierbei kommt es zu folgendem Problem: Der Client sendet mittels SendStream(SS, 0, true) einen StringStream zum Server. Beim Server wird das OnExecute Ereigniss ausgelöst und die Daten auch wunderbar empfangen.

Allerdings kommt es Zeitweise vor, dass seltsame Zeichen zwischen meinem Text landen. Dies passiert in unregelmäßigen Abständen. So sieht der Text an, der z.b. beim Server ankommt:
Code:
'ž°'#0'*~Auth~'#0'|~12345607890'#9'H'#0'À/2'#0'aC3nhDyn'#0'utmlb/2P'#0'VCwuAe/i'#0'IsvFsxnm'#0'LTKXF8Gz
'#2'e'#0'Zbaed29'#0'1c3ffde5'#0'cad9b3c7'#0'8bf3a9f5'#2'a'#1'DTestSe'#$10'rver'#0#$18'FLO'#$10'RIAN'#1#9'lor'
#0'ian Bern'#2'd'#1#$90'~|'
Hierbei sind sämtliche #0, #9, #2, etc und alle "reingebauten" Strings, wie direkt am Anfang nicht von mir .. woran kann das liegen? Vielleicht, weil ich SendStream im Thread aufrufe?

Gruß Florian

marabu 10. Jun 2007 08:31

Re: Indy SendStream - seltsame Zeichen im Text
 
Guten Morgen Florian.

Du solltest zuerst überprüfen, ob die empfangenen Daten nicht mit den versendeten Daten identisch sind.

Wie entstehen die Daten?
Wie gelangen sie in den StringStream?
Welche Arten der Zwischenspeicherung (z.B. array of string, StringList) verwendest du?

Grüße vom marabu

Zacherl 10. Jun 2007 13:03

Re: Indy SendStream - seltsame Zeichen im Text
 
Also die versendeten Daten sind nicht identisch. Bevor ich die Daten der SendStream Funktion übergebe sind sie genau so, wie ich sie haben will.

In den StringStream gelangen sie über die Create Methode des Streams. Zwischenspeicherung verwende ich keine. Wenn ein Bestimmter Befehl beim Client eingeht sendet dieser unmittelbar das benannte Datenpaket zurück. Dabei kommt es vor, dass beim Server nur Müll ankommt :(

SirThornberry 10. Jun 2007 13:09

Re: Indy SendStream - seltsame Zeichen im Text
 
woher weißt du das die daten vor dem Senden im Stream genau so sind wie du sie haben willst? kannst du nicht mal etwas quelltext zeigen wie du sie in den Stream packst und verschickst? und vor allem wie du sie dann wieder liest.

Zacherl 10. Jun 2007 14:50

Re: Indy SendStream - seltsame Zeichen im Text
 
Ich weiß das, weil ich den Ausdruck im Debugger überwacht habe. Meine Funktion zum Senden:

Delphi-Quellcode:
procedure SendString(Client: TIdTCPClient; Value: String);
var
  SS: TStringStream;
begin
  SS := TStringStream.Create(Value);
  try
    Client.IOHandler.Write(SS, 0, true);
  finally
    SS.Free;
  end;
end;
Lesen mache ich einfach mit einem simplen Aufruf von ReadStream(SS). Die Daten sind dann in SS.DataStream. Komisch ist halt, dass sie mal korrekt ankommen und mal nicht ..


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