TClientSocket.SetTCPNoDelay

TClientSocket = class (TObject)Interface de TClientSocketExemples de TClientSocket

Désactivation de l'algorithme de Nagle

Syntaxe

procedure SetTCPNoDelay(value: Boolean)
value: True ou False

Remarques

Les paquets TCP ont des en-têtes de taille fixe.
Quand il y a très peu de données à transmettre dans un paquet, les en-têtes ajoutent une charge à transférer qui peut être plus importante que les données utiles.
De plus, si on remplit le buffer d'émission en salves successives, cela va créer de nombreux paquets qui risquent de congestionner le réseau.

Pour éviter cela, le mode de fonctionnement par défaut des connexions TCP/IP utilise l'algorithme de Nagle.
Ainsi, dans le protocole TCP/IP, quand un émetteur émet un paquet, le récepteur doit l'acquitter.
Quand l'algorithme est utilisé, l'émetteur accumule les données à envoyer dans son buffer d'émission et ne les envoie que lorsque le paquet envoyé précédemment a été acquitté par le destinataire.

L'inconvénient de cette solution est que le gain en bande passante induit une certaine latence (car les données suivantes ne sont envoyées qu'après un aller-retour vers le destinataire).
Si on souhaite des opérations qui tendent vers le "temps réel" et qu'on a un réseau rapide et fiable, on peut désactiver cette optimisation via :

uses Sockets;

var cnx:=new TClientSocket;
cnx.SetTCPNoDelay(True);

Classification

Sockets TClientSocket