TsgcTCPClient › Méthodes › WriteData

WriteData Méthode

Envoie un message texte ou binaire au serveur TCP via le socket brut.

Surcharges

Surcharge 1

Syntaxe

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

Paramètres

NomTypeDescription
aTextconst String La charge utile texte à envoyer au serveur. Les octets sont écrits directement dans le socket TCP sans aucun en-tête de trame.
aSizeconst Integer Taille de fragment optionnelle en octets ; lorsqu'elle est supérieure à zéro, le payload est découpé en plusieurs morceaux de cette taille. Utilisez 0 (la valeur par défaut) pour envoyer l'intégralité du payload en une seule écriture.
aStreaming const TwsStreaming Mode de diffusion pour la transmission fragmentée (stmNone, stmStart, stmContinue, stmFinish). Par défaut stmNone, qui envoie la charge utile en une seule écriture autonome.

Remarques

WriteData transmet la chaîne sous forme d'octets bruts sur la connexion TCP active. Contrairement au client WebSocket, il n'y a pas d'en-tête de frame texte ; le pair reçoit exactement les octets que vous envoyez, donc les deux extrémités doivent convenir d'un séparateur ou d'un préfixe de longueur. Par défaut, l'appel s'exécute sur le thread appelant et retourne une fois que les octets ont été transmis au socket. Lorsque QueueOptions.Text est défini à une valeur autre que qmNone, le message est mis en file d'attente et envoyé depuis le thread propre à la connexion, ce qui évite les verrous lorsque plusieurs threads écrivent simultanément. Toute exception de socket est transmise à OnError. Utilisez la surcharge de flux lors de l'envoi de grandes charges utiles ou de données binaires.

Lorsque le client n'est pas connecté, rien n'est envoyé et l'échec est signalé via OnError avec Connection = nil et l'erreur Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED). L'événement se déclenche sur le thread appelant avant que WriteData ne retourne, et LastError contient le même texte. Aucune exception n'est levée vers l'appelant et le client n'est pas déconnecté. Définissez Options.RaiseDisconnectExceptions sur False dans le code pour ignorer ce signalement et abandonner le message silencieusement, comme le faisaient les versions précédentes. Lorsqu'un envoi échoue parce que sa connexion a été perdue et que le client s'est déjà reconnecté, l'échec est également signalé avec Connection = nil, de sorte que la nouvelle connexion reste ouverte.

Exemple


oClient.WriteData('Hello Server');

Surcharge 2

Syntaxe

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

Paramètres

NomTypeDescription
aStreamconst TStream Flux source dont le contenu sera écrit dans le socket en tant qu'octets bruts. L'appelant reste propriétaire du flux.
aSizeconst Integer Taille de fragment optionnelle en octets ; lorsqu'elle est supérieure à zéro, le flux est divisé en plusieurs morceaux de cette taille. Utilisez 0 (la valeur par défaut) pour envoyer l'intégralité du flux en une seule écriture.
aStreaming const TwsStreaming Mode de streaming pour la transmission fragmentée (stmNone, stmStart, stmContinue, stmFinish). Par défaut stmNone, ce qui envoie le flux comme une seule écriture autonome.

Remarques

WriteData lit le flux fourni depuis sa position actuelle et transmet le contenu sous forme d'octets bruts sur le socket TCP. Comme le client TCP n'encapsule pas les données dans des trames WebSocket, le pair doit savoir comment délimiter les octets entrants (généralement via un préfixe de longueur ou un séparateur au niveau de l'application). L'appel s'exécute sur le thread appelant par défaut ; lorsque QueueOptions.Binary est défini à une valeur autre que qmNone, le message est mis en file d'attente et effectivement distribué depuis le thread de connexion. Les exceptions de socket sont capturées et transmises à OnError. Lorsque le client n'est pas connecté, rien n'est envoyé et l'échec est signalé via OnError avec Connection = nil, comme décrit pour la surcharge texte. Libérez le flux uniquement après le retour de l'appel (ou, lors de la mise en file d'attente, après l'envoi complet).

Exemple


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

Retour aux méthodes