Titolo: [v11 SQL] Elenco dei 4D server aperti con i nuovi comandi UDP
Categoria: Codice |
|
Ultimo Aggiornamento: 21/11/07 |
UDP (User Datagram Protocol) è un protocollo di comunicazione di facile implementazione più snello di TCP (per l'header TCP usa 20 byte, UDP 8) ma non altrettanto affidabile. Se da un lato infatti permette comunicazioni veloci, dall'altra non viene fatto alcun controllo d'errore o riparazione di dati non ricevuti.
La v11 SQL mette a disposizione una serie di comandi che implementano la comunicazione via UDP. Quello che segue è un esempio che usa i comandi UDP per ottenere l'elenco dei server 4D presenti in una rete locale.
ARRAY STRING (255;asHost;0)
ARRAY STRING (32;asMachineName;0)
ARRAY STRING (32;asService;0)
ARRAY STRING (32;asDBName;0)
C_BLOB ($Blob)
$indirizzo_t:="255.255.255.255"
$Porta_t:=19813
$posizione_l:=32
SET BLOB SIZE($Blob;96;0)
TEXT TO BLOB("4D Server";$Blob;Mac text without length;$posizione_l)
$Err:=
UDP_New(0;$udpID)
$Err:=
UDP_SendBLOBTo($udpID;$indirizzo_t;$Porta_t;$Blob)
$Secondi_l:=2
$Timeout_l:=Milliseconds+($Secondi_l*1000)
Repeat DELAY PROCESS(Current process;6) `... espresso in ticks
SET BLOB SIZE($Blob;0;0)
$guardaIndirizzo_t:=$indirizzo_t
$Err:=
UDP_ReceiveBLOBFrom($udpID;$guardaIndirizzo_t;$Porta_t;$Blob)
If (BLOB size($Blob)>0)
$posizione_l:=0
$Host_t:=BLOB to text($Blob;Mac C string;$posizione_l;32)
$posizione_l:=32
$Service_t:=BLOB to text($Blob;Mac C string;$posizione_l;32)
$posizione_l:=64
$DBName_t:=BLOB to text($Blob;Mac C string;$posizione_l;32)
$Pos:=Find in array(asMachineName;$Host_t)
If ($Pos>0)
APPEND TO ARRAY(asHost;$guardaIndirizzo_t)
APPEND TO ARRAY(asMachineName;$Host_t)
APPEND TO ARRAY(asService;$Service_t)
APPEND TO ARRAY(asDBName;$DBName_t)
End if End ifUntil ((Milliseconds>$Timeout_l) | ($Err#0))
$Err:=
UDP_Delete($udpID)
Inviato da: PierPaolo Sichera |
|
Visite: 11827 |
Se accedi con utente e password, puoi aggiungere dei commenti.