Aller au contenu principal
Version: 20 R10 BETA

UDPSocket

La classe UDPSocket vous permet d'envoyer et de recevoir des paquets UDP. UDP (User Datagram Protocol) est un protocole facile à implémenter pour l'envoi de données. Il est plus rapide et plus simple que TCP (seulement 8 octets d'en-tête par opposition à au moins 20 octets dans TCP), mais il n'offre pas le même niveau de fiabilité. Il est utile pour les applications où les données doivent arriver rapidement à leur destination. Cependant, elle ne permet pas de vérifier la livraison, ni de contrôler les erreurs ou de récupérer les données qui n'ont pas été livrées correctement.

La classe UDPSocket est disponible dans le class store 4D. Vous pouvez créer une connexion UDP en utilisant la fonction 4D.UDPSocket.new(), qui retourne un objet UDPSocket.

Grâce au refcounting des objets 4D standard, un socket UDPSocket est automatiquement libéré lorsqu'il n'est plus référencé, c'est-à-dire lorsqu'il n'y a plus de références vers lui en mémoire. Cela se produit généralement, par exemple, à la fin de l'exécution d'une méthode pour les variables locales. Par conséquent, les ressources associées sont correctement refermées sans qu'il soit nécessaire de procéder à une clôture explicite. Cependant, si vous voulez "forcer" la fermeture d'un socket à tout moment, nullifiez ses références en les mettant à Null.

Fichier 4DTCPUDPLog.txt

For debugging and monitoring, you can use the 4DTCPUDPLog.txt log file that records events related to UDP sockets. Ces événements comprennent la transmission de données, les erreurs et les informations sur le cycle de vie de la connexion.

Historique
ReleaseModifications
20 R10Classe ajoutée

Exemple

Objet UDPSocket

Un objet UDPSocket est non-modifiable (immutable) et non streamable.

Les objets UDPSocket offrent les propriétés et fonctions suivantes :

errors : Collection
une collection d'objets d'erreur associés au socket
port : Number
le numéro du port à écouter
.send( data : Blob ; hostName : Text ; remotePort : Integer )
envoie des data au serveur distant hostName sur le remotePort spécifié

4D.UDPSocket.new()

4D.UDPSocket.new() : 4D.UDPSocket
4D.UDPSocket.new( options : Object ) : 4D.UDPSocket
4D.UDPSocket.new( port : Integer ) : 4D.UDPSocket
4D.UDPSocket.new( port : Integer ; options : Object ) : 4D.UDPSocket

ParamètresTypeDescription
portInteger->Port local utilisé pour le socket UDP (0 ou omis = trouver un port inutilisé à utiliser)
optionsObject->Configuration options pour le socket
RésultatUDPSocket<-Nouvel objet UDPSocket

Description

La fonction 4D.UDPSocket.new() crée un nouveau socket UDP en utilisant les options définies (le cas échéant) sur le port spécifié (le cas échéant) ou sur un port aléatoire inutilisé, et renvoie un objet 4D.UDPSocket.

Paramètre options

Dans le paramètre options, vous pouvez passer un objet qui contient les propriétés suivantes :

PropriétéTypeDescriptionPar défaut
onDataFormulaCallback déclenchée lors de la réception de donnéesUndefined
onErrorFormulaCallback déclenchée en cas d'erreurUndefined
onTerminateFormulaCallback déclenchée lorsque le port est libéréUndefined

Fonctions de callback

Toutes les fonctions de callback reçoivent deux paramètres :

ParamètresTypeDescription
$socketObjet UDPSocketL'instance UDPSocket courante.
$eventObjet UDPEventContient des informations sur l'événement.

Séquence des appels de callbacks :

  1. onData est déclenchée à chaque fois que des données sont reçues.
  2. onError est déclenchée en cas d'erreur.
  3. onTerminate est toujours déclenchée juste avant que le port soit libéré (le socket est fermé ou une erreur s'est produite).

Objet UDPEvent

Un objet UDPEvent est retourné lorsqu'une fonction de callback est appelée.

.errors

errors : Collection

Description

La propriété .errors contient une collection d'objets d'erreur associés au socket. Chaque objet erreur comprend le code d'erreur, une description et la signature du composant qui a provoqué l'erreur.

PropriétéTypeDescription
errorsCollectionPile d'erreurs 4D en cas d'erreur
[].errCodeNumberCode d'erreur 4D
[].messageTextDescription de l'erreur 4D
[].componentSignatureTextSignature du composant interne qui a retourné l'erreur

.port

port : Number

Description

La propriété .port contient le numéro du port à écouter. Cette propriété est en lecture seule.

.send()

.send( data : Blob ; hostName : Text ; remotePort : Integer )

ParamètresTypeDescription
dataBlob->Données à envoyer
hostNameText->Nom ou adresse IP du serveur
remotePortInteger->Port distant auquel se connecter (0=n'importe lequel)

Description

La fonction send() envoie des data au serveur distant hostName sur le remotePort spécifié.

hostName est le nom ou l'adresse IP du serveur où les données seront envoyées.

remotePort est le numéro du port auquel se connecter. Passez 0 pour utiliser n'importe quel port disponible.

Voir également

UDPEvent