AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi SocketServer / -Client: Übertragung eines Strings im Record
Thema durchsuchen
Ansicht
Themen-Optionen

SocketServer / -Client: Übertragung eines Strings im Record

Ein Thema von p0w3r5tr34m3r · begonnen am 21. Jul 2008 · letzter Beitrag vom 21. Jul 2008
 
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: SocketServer / -Client: Übertragung eines Strings im Rec

  Alt 21. Jul 2008, 18:07
Moin!

"Array of Char" ist ein dynamisches Array und somit wird in der Struktur nicht die Daten an sich sondern nur die Adresse der Daten gespeichert. Somit überträgst du nur die Adresse der Daten, welche nur in deinem sendenen Prozess gültig ist und dem Empfänger rein gar nichts nützen.

Wenn du variable Strings versenden willst, dann musst du dich grundlegend schonmal von den festen Strukturen einer Record Definition trennen. Du musst den String in zwei Bestandteilen versenden: als erstes die Länge und dann die Daten des Strings selbst.

Pseudo-Code senden:
Delphi-Quellcode:
procedure SendString(ASocket: TCustomWinSocket; const AData: string);
var
  lLen: integer;
begin
  lLen := length(AData);
  ASocket.SendBuf(lLen, sizeof(lLen)); // 4 Bytes mit der Länge der folgenden Stringdaten
  ASocket.SendBuf(AData[1], lLen);
end;
Pseudo-Code empfangen:
Delphi-Quellcode:
function ReceiveString(ASocket: TCustomWinSocket; const AData: string): string;
var
  lLen: integer;
begin
  result := '';

  if ASocket.ReceiveLength >= sizeof(lLen) then
  begin
    ASocket.ReceiveBuf(lLen, sizeof(lLen)); // 4 Bytes mit der Länge der folgenden Stringdaten

    if ( lLen > 0 ) and ( ASocket.ReceiveLength >= lLen ) then
    begin
      SetLength(result, lLen);
      ASocket.ReceiveBuf(result[1], lLen);
    end;
  end;
end;
MfG
Muetze1
  Mit Zitat antworten Zitat
 


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