version 11
UDP (User Datagram Protocol) は実装が簡単なデータ送信プロトコルです。TCPに比べ高速でシンプルです (TCPヘッダが最低20倍とヘッダに必要なのに対し、UDPは8バイトです) が、信頼性は提供されません。このプロトコルはデータが素早く送信先に到達することが重要なアプリケーションで使用できます。このプロトコルはデータ転送検証やエラーチェック、送信されなかったデータの復元ができません。
例題
この例題は、UDPコマンドを使用して、ローカルネットワークで実行されている4D Serverのリストを取得する方法を示しています:
ARRAY STRING(255;asHost;0)
ARRAY STRING(32;asMachineName;0)
ARRAY STRING(32;asService;0)
ARRAY STRING(32;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";$Blob;Text without length;$Offset)
$Err:=UDP_New(0;$udpID)
$Err:=UDP_SendBLobTo($udpID;$Addr;$Port;$Blob)
$Secs:=2
$Timeout:=Milliseconds+($Secs*1000)
Repeat
DELAY PROCESS(Current process;6) `... in ticks
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;C string;$Offset;32)
$Offset:=32
$Service:=BLOB to text($Blob;C string;$Offset;32)
$Offset:=64
$DBName:=BLOB to text($Blob, C string;$Offset;32)
$Pos:=Find in array(asMachineName;$Host)
If($Pos>0)
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)
参照