UDP (User Datagram Protocol) は実装が簡単なデータ送信プロトコルです。TCPに比べ高速でシンプルです (TCPの場合最低20バイトがヘッダに必要なのに対し、UDPは8バイトです) が、信頼性は提供されません。このプロトコルはデータが素早く送信先に到達することが重要なアプリケーションで使用できます。このプロトコルはデータ転送 検証やエラーチェック、送信されなかったデータの復元ができません。
この例題は、UDPコマンドを使用してローカルネットワークで実行されている4D Serverのリストを取得する方法を示しています:
ARRAY TEXT(asHost;0)
ARRAY TEXT(asMachineName;0)
ARRAY TEXT(asService;0)
ARRAY TEXT(asDBName;0)
C_BLOB($Blob)
$Addr:="255.255.255.255"
$Port:=19813
$Offset:=32
SET BLOB SIZE($Blob;96;0)
TEXT TO BLOB("4D Server II";$Blob;Mac text without length;$Offset)
$Err:=UDP_New(0;$udpID)
$Err:=UDP_SendBLOBTo($udpID;$Addr;$Port;$Blob)
$Secs:=5
$Timeout:=Milliseconds+($Secs*1000)
Repeat
DELAY PROCESS(Current process;6)
SET BLOB SIZE($Blob;0;0)
$PeerAddr:=$Addr
$Err:=UDP_ReceiveBLOBFrom($udpID;$PeerAddr;$Port;$Blob)
If(BLOB size($Blob)>0)
$Offset:=0
$Host:=BLOB to text($Blob;Mac C string;$Offset;32)
$Offset:=32
$Service:=BLOB to text($Blob;Mac C string;$Offset;32)
$Offset:=64
$DBName:=BLOB to text($Blob;Mac C string;$Offset;32)
$Pos:=Find in array(asMachineName;$Host)
If($Pos=-1)
APPEND TO ARRAY(asHost;$PeerAddr)
APPEND TO ARRAY(asMachineName;$Host)
APPEND TO ARRAY(asService;$Service)
APPEND TO ARRAY(asDBName;$DBName)
End if
End if
Until((Milliseconds>$Timeout)|($Err#0))
$Err:=UDP_Delete($udpID)