TsgcTCPClient › Methoden › WriteData

WriteData Methode

Verzendt een tekst- of binair bericht naar de TCP-server via de raw socket.

Overloads

Overload 1

Syntaxis

procedure WriteData(const aText: String; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);

Parameters

NaamTypeBeschrijving
aTextconst StringDe tekstpayload om naar de server te sturen. De bytes worden rechtstreeks naar de TCP-socket geschreven zonder enig frame-header.
aSizeconst IntegerOptionele fragmentgrootte in bytes; wanneer groter dan nul wordt de payload opgesplitst in meerdere blokken van deze grootte. Gebruik 0 (de standaard) om de gehele payload in één schrijfbewerking te verzenden.
aStreamingconst TwsStreamingStreamingmodus voor gefragmenteerde verzending (stmNone, stmStart, stmContinue, stmFinish). Standaard stmNone, waarbij de payload als een enkelvoudige standalone schrijfbewerking wordt verzonden.

Opmerkingen

WriteData verzendt de tekenreeks als onbewerkte bytes op de actieve TCP-verbinding. In tegenstelling tot de WebSocket-client is er geen tekstframe-header; de peer ontvangt precies de bytes die u verzendt, zodat beide kanten het eens moeten zijn over een scheidingsteken of lengteprefix. Standaard wordt de aanroep uitgevoerd op de aanroepende thread en keert terug zodra de bytes aan de socket zijn overgedragen. Wanneer QueueOptions.Text is ingesteld op een andere waarde dan qmNone, wordt het bericht in een wachtrij geplaatst en daadwerkelijk verzonden vanuit de eigen thread van de verbinding, wat vergrendeling voorkomt wanneer meerdere threads gelijktijdig schrijven. Elke socketuitzondering wordt doorgestuurd naar OnError. Gebruik de stream-overload bij het verzenden van grote payloads of binaire gegevens.

Wanneer de client niet is verbonden, wordt er niets verzonden en wordt de fout gemeld via OnError met Connection = nil en de foutmelding Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED). De gebeurtenis wordt geactiveerd op de aanroepende thread voordat WriteData terugkeert, en LastError bevat dezelfde tekst. Er wordt geen uitzondering naar de aanroeper gegenereerd en de verbinding wordt niet verbroken. Stel Options.RaiseDisconnectExceptions in code in op False om deze melding over te slaan en het bericht stilzwijgend te laten vallen, zoals in eerdere versies. Wanneer een schrijfbewerking mislukt omdat de verbinding verloren is gegaan en de client al opnieuw is verbonden, wordt de fout ook gemeld met Connection = nil, zodat de nieuwe verbinding open blijft.

Voorbeeld


oClient.WriteData('Hello Server');

Overload 2

Syntaxis

procedure WriteData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);

Parameters

NaamTypeBeschrijving
aStreamconst TStreamBronstream waarvan de inhoud als ruwe bytes naar de socket wordt geschreven. De aanroeper blijft eigenaar van de stream.
aSizeconst IntegerOptionele fragmentgrootte in bytes; wanneer deze groter is dan nul, wordt de stream opgesplitst in meerdere chunks van deze grootte. Gebruik 0 (de standaard) om de hele stream in één schrijfbewerking te verzenden.
aStreamingconst TwsStreamingStreamingmodus voor gefragmenteerde verzending (stmNone, stmStart, stmContinue, stmFinish). Standaard stmNone, wat de stream als één op zichzelf staand schrijfbewerkingen verzendt.

Opmerkingen

WriteData leest de opgegeven stream vanaf zijn huidige positie en verzendt de inhoud als onbewerkte bytes op de TCP-socket. Omdat de TCP-client gegevens niet verpakt in WebSocket-frames, moet de peer weten hoe de inkomende bytes te begrenzen (doorgaans via een lengteprefix of een scheidingsteken op applicatieniveau). De aanroep wordt standaard uitgevoerd op de aanroepende thread; wanneer QueueOptions.Binary is ingesteld op een andere waarde dan qmNone, wordt het bericht in de wachtrij geplaatst en daadwerkelijk verzonden vanuit de verbindingsthread. Socket-uitzonderingen worden vastgelegd en doorgestuurd naar OnError. Wanneer de client niet is verbonden, wordt er niets verzonden en wordt de fout gemeld via OnError met Connection = nil, zoals beschreven voor de tekst-overload. Geef de stream pas vrij nadat de aanroep is teruggekeerd (of, bij gebruik van wachtrijen, nadat de verzending is voltooid).

Voorbeeld


oStream := TMemoryStream.Create;
try
  oStream.LoadFromFile('payload.bin');
  oClient.WriteData(oStream);
finally
  oStream.Free;
end;

Terug naar methoden