メインコンテンツまでスキップ
バージョン: 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 ファイル

UDP ソケットに関連したイベントを記録する[4DTCPUDPLog.txt ログファイル]を使用すると、 デバッグやモニタリングを行うことができます。 記録されるイベントには、データ送信、エラー、接続ライフサイクル情報などが含まれます。

履歴
リリース内容
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( options : Object ) : 4D.UDPSocket
4D.UDPSocket.new( port : Integer ; options : Object ) : 4D.UDPSocket

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

説明

4D.UDPSocket.new() 関数は、port 引数(あれば)で指定されたポートまたは未使用のランダムなポート上で、 options 引数で定義されたオプションを使用して新しいUDP ソケットを作成し、4D.UDPSocket オブジェクトを返します。

options 引数

options に渡すオブジェクトは、次のプロパティを持つことができます:

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

コールバック関数

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

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

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

  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