Aller au contenu principal
Version: 20 R10 BETA

UDPSocket

The UDPSocket class allows you to send and receive UDP packets. UDP (User Datagram Protocol) is an easy-to-implement protocol for sending data. It is faster and simpler than TCP (only 8 bytes of header as opposed to at least 20 bytes in TCP), but it does not offer the same level of reliability. It is useful for applications where data must arrive at their destination quickly. However, it does not allow verification of delivery, nor does it allow error-checking or recovery of data that was not delivered correctly.

The UDPSocket class is available from the 4D class store. You can create a UDP connection using the 4D.UDPSocket.new() function, which returns a UDPSocket object.

Thanks to the standard 4D object refcounting, a UDPSocket is automatically released when it is no longer referenced, i.e. when no more references to them exist in memory. Cela se produit généralement, par exemple, à la fin de l'exécution d'une méthode pour les variables locales. Consequently, the associated resources are properly cleaned up without requiring explicit closure. However, if you want to "force" the closure of a socket at any moment, nullify its references by setting them to Null.

4DTCPUDPLog.txt file

For debugging and monitoring, you can use the [4DTCPUDPLog.txt log file] that records events related to UDP sockets. Events include data transmission, errors, and connection lifecycle information.

Historique
ReleaseModifications
20 R10Classe ajoutée

Exemple

UDPSocket Object

A UDPSocket object is immutable, non streamable.

UDPSocket objects provide the following properties and functions:

errors : Collection
a collection of error objects associated with the socket
port : Number
the port number to listen to
.send( data : Blob ; hostName : Text ; remotePort : Integer )
sends data to the remote hostName server on the specified remotePort

4D.UDPSocket.new()

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

ParamètresTypeDescription
portInteger->Local port used for UDP socket (0 or omitted = find any unused port to use)
optionsObject->Configuration options for the socket
RésultatUDPSocket<-New UDPSocket object

Description

The 4D.UDPSocket.new() function creates a new UDP socket using the defined options on the specified port (if any) or on a random unused port, and returns a 4D.UDPSocket object.

Paramètre options

Dans le paramètre options, passez un objet qui peut contenir 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 triggered when the port is releasedUndefined

Fonctions de callback

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

ParamètresTypeDescription
$socketUDPSocket objectThe current UDPSocket instance.
$eventUDPEvent objectContient 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 is always triggered just before the port is released (socket is closed or an error occured).

UDPEvent object

A UDPEvent object is returned when a callback function is called.

.errors

errors : Collection

Description

The .errors property contains a collection of error objects associated with the 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

The .port property contains the port number to listen to. Cette propriété est en lecture seule.

.send()

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

ParamètresTypeDescription
dataBlob->Données à envoyer
hostNameText->Name or IP address of server
remotePortInteger->Remote port to connect to (0=any)

Description

The send() function sends data to the remote hostName server on the specified remotePort.

hostName is the name or IP address of the server where the data will be sent.

remotePort is the number of the port to be connected to. If you pass 0, any available port will be used.

Voir également

UDPEvent