UDPコマンド - 概要

4D - Documentation   Fran溝is   English   German   日本語   4D Internet Commandsテーマリスト   4D Internet Commandsインデックス   Back   Previous   Next

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)

参照

低レベルルーチン - 概要.


4D - Documentation   Fran溝is   English   German   日本語   4D Internet Commandsテーマリスト   4D Internet Commandsインデックス   Back   Previous   Next