メインコンテンツまでスキップ
バージョン: 20 R10 BETA

UDPSocket

UDPSocket クラスを使用すると、UDP パケットの送信と受信が可能になります。 UDP (User Datagram Protocol) は、データを送信するための、実装が簡単なプロトコルです。 これはTCP よりも早くてシンプル(TCP のヘッダーが最低20 バイトであるのに対してUDP はヘッダーがわずか8 バイト)ですが、信頼性のレベルは同じではありません。 これはデータが目的地に迅速に到着する必要のあるアプリケーションに有用です。 ただし、これは配信の検証も、正常に配信されなかったデータの復旧もエラーチェックも行うことはできません。

UDPSocket クラスは4D クラスストアから利用可能です。 UDP 接続は、 UDPSocket オブジェクト を返す 4D.UDPSocket.new() 関数を使用することで作成することができます。

標準の4D オブジェクトの refcounting のおかげで、UDPSocket はそれがもう参照されなくなったときに自動的にリリースされます。これはつまりメモリ内にUDPSocket への参照が残っていない状態になったときを意味します。 これ一般的に、例えばメソッド実行の最後にローカル変数が消去されるときに発生します。 結果として、それに関連したリソースは、明示的な終了を必要とせずに適切にクリーンアップされます。 しかしながら、ソケットを"強制的に"終了させたい場合には、Null を代入することで参照を無効化 してください

4DTCPUDPLog.txt ファイル

For debugging and monitoring, you can use the 4DTCPUDPLog.txt log file that records events related to UDP sockets. 記録されるイベントには、データ送信、エラー、接続ライフサイクル情報などが含まれます。

履歴
リリース内容
20 R10クラスを追加

例題

UDPSocket オブジェクト

UDPSocket オブジェクトは変更不可であり、ストリーム不可です。

UDPSocket オブジェクトは以下のプロパティと関数を提供します:

errors : Collection
ソケットに関連したエラーオブジェクトのコレクション
port : Number
リッスンするポート番号
.send( data : Blob ; hostName : Text ; remotePort : Integer )
data 引数のデータをhostName で指定したリモートサーバーに、remotePort 引数で指定したポート番号で送信します

4D.UDPSocket.new()

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

引数説明
portInteger->UDP ソケットに使用されるローカルのポート番号(0 または省略時には使用されていないポートを探して使用)
optionsObject->ソケットの接続オプション
戻り値UDPSocket<-新規UDPSocket オブジェクト

説明

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

options 引数

In the options parameter, you can pass an object that contains the following properties:

プロパティ説明デフォルト
onDataFormulaデータが受信されたときにトリガーされるコールバック未定義
onErrorFormulaエラーの場合にトリガーされるコールバック未定義
onTerminateFormulaポートがリリースされた時にトリガーされるコールバック未定義

コールバック関数

すべてのコールバック関数は、2つの引数を受け取ります:

引数説明
$socketUDPSocket オブジェクトカレントのUDPSocket インスタンス。
$eventUDPEvent objectイベントに関する情報が含まれているオブジェクト

コールバックの呼び出しの順番:

  1. onData はデータが受信されるたびにトリガーされます。
  2. onError はエラーが発生した場合にトリガーされます。
  3. onTerminate は常にポートが閉じられる直前にトリガーされます(ソケットが閉じられたか、エラーが発生した場合です)。

UDPEvent オブジェクト

コールバック関数 が呼ばれた際にはUDPEvent オブジェクトが返されます。

.errors

errors : Collection

説明

.errors プロパティにはソケットに関連したエラーオブジェクトのコレクションが格納されています。 各エラーオブジェクトにはエラーコード、エラーの詳細、そしてそのエラーを起こしたコンポーネントの署名が格納されています。

プロパティ説明
errorsCollectionエラー発生時の 4Dエラースタック
[].errCodeNumber4Dエラーコード
[].messageText4Dエラーの詳細
[].componentSignatureTextエラーを返した内部コンポーネントの署名

.port

port : Number

説明

.port プロパティにはリッスンするポート番号 が格納されています。 このプロパティは 読み取り専用 です。

.send()

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

引数説明
dataBLOB->送信するデータ
hostNameText->サーバーの名前またはIP アドレス
remotePortInteger->接続するリモートポート(0=任意)

説明

send() 関数は、data 引数のデータをhostName で指定したリモートサーバーに、remotePort 引数で指定したポート番号で送信します。

hostName 引数はデータの送信先のサーバーの名前またはIP アドレスです。

remotePort 引数は接続するポート番号です。 0 を渡した場合、利用可能な任意のポートが使用されます。

参照

UDPEvent