version 11
UDP (User Datagram Protocol) est un protocole de communication réseau déconnecté permettant la transmission de données par paquets. Facile à mettre en oeuvre, il est plus rapide et plus simple que le protocole TCP (l'en-tête UDP tient sur 8 octets, à comparer aux 20 octets minimum de l'en-tête TCP), mais il n'offre pas le même niveau de fiabilité. Il est adapté aux applications privilégiant la rapidité de transmission des données. En revanche, il ne permet pas de vérifier que les paquets sont bien arrivés à destination et ne propose pas de contrôle d'erreur ni de système de récupération.
Exemple
L'exemple suivant utilise le protocole UDP pour récupérer dans des tableaux la liste de tous les postes 4D Server actifs sur le réseau local:
TABLEAU ALPHA(255;taHost;0) TABLEAU ALPHA(32;taNomMachine;0) TABLEAU ALPHA(32;taService;0) TABLEAU ALPHA(32;taNomDB;0) C_BLOB($Blob) $Addr:="255.255.255.255" $Port:=19813 $Offset:=32 FIXER TAILLE BLOB($Blob;96;0) TEXTE VERS BLOB("4D Server";$Blob;Mac Texte sans longueur;$Offset) $Err:=UDP_New(0;$udpRef) $Err:=UDP_SendBLOBTo($udpRef;$Addr;$Port;$Blob) $Secs:=2 $Timeout:=Nombre de millisecondes+($Secs*1000) Repeter ENDORMIR PROCESS(Numero du process courant;6) `... en ticks FIXER TAILLE BLOB($Blob;0;0) $PeerAddr:=$Addr $Err:=UDP_ReceiveBLOBFrom($udpRef;$PeerAddr;$Port;$Blob) Si(Taille BLOB($Blob)>0) $Offset:=0 $Host:=BLOB vers texte($Blob;Mac Chaîne en C;$Offset;32) $Offset:=32 $Service:=BLOB vers texte($Blob;Mac Chaîne en C;$Offset;32) $Offset:=64 $NomDB:=BLOB vers texte($Blob, Mac Chaîne en C;$Offset;32) $Pos:=Chercher dans tableau(taNomMachine;$Host) Si($Pos>0) AJOUTER A TABLEAU(taHost;$PeerAddr) AJOUTER A TABLEAU(taNomMachine;$Host) AJOUTER A TABLEAU(taService;$Service) AJOUTER A TABLEAU(taNomDB;$NomDB) Fin de si Fin de si Jusque((Nombre de millisecondes>$Timeout) | ($Err#0)) $Err:=UDP_Delete($udpRef)
Référence
Routines de bas niveau, Présentation.