メインコンテンツまでスキップ
バージョン: 次へ

TCPListener

TCPListener クラスを使用すると、4D で TCP サーバーを作成および設定することができます。 TCP リスナーがインスタンス化されると、クライアントからのTCP 接続を受信し、TCP をサポートしているあらゆるプロトコルを使用して通信することができるようになります。

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

TCPListener クラスは 4D クラスストアにて提供されています。 TCP サーバーは、TCPListener オブジェクト を返す 4D.TCPListener.new() 関数を使用して作成できます。

全てのTCPListener クラス関数はスレッドセーフです。

Aynchronous programming

This class supports asynchronous programming in 4D as described in the Asynchronous Execution page.

例題


property listener : 4D.TCPListener

Class constructor($port : Integer)

This.listener:=4D.TCPListener.new($port; This)

Function terminate()

This.listener.terminate()

Function onConnection($listener : 4D.TCPListener; $event : 4D.TCPEvent)->$result
// 接続したら、通信を管理するサーバーを開始する
If($event.address # "192.168.@")
$result:=Null // 特定の場合には接続を拒否します
Else
$result:=cs.MyAsyncTCPConnection.new(This) // 詳細はTCPConnection クラスを参照のこと
End if

Function onError($listener : 4D.TCPListener; $event : 4D.TCPEvent)

Function onTerminate($listener : 4D.TCPListener; $event : 4D.TCPEvent)

MyAsyncTCPConnection ユーザークラスの詳細については、TCPConnection クラスの例題 を参照して下さい。

TCPListener オブジェクト

TCPListener オブジェクトは共有オブジェクトです。

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

errors : Collection
接続に関連したエラーオブジェクトのコレクションが格納されています
port : Number
マシンのポート番号
.terminate()
リスナーを閉じ、ポートを閉じます

4D.TCPListener.new()

4D.TCPListener.new( port : Number ; options : Object ) : 4D.TCPListener

引数説明
portReal->リッスンするTCP ポート番号
optionsObject->リスナーの設定オプション
戻り値4D.TCPListener<-新規TCPListener オブジェクト

説明

4D.TCPListener.new() 関数は、port 引数で指定したポートをリッスンする新規のサーバーを、options 引数で定義されたオプションを使用して作成し、4D.TCPListener オブジェクトを返します。

options 引数

options 引数には、リスナーとそれが作成する全てのTCPConnections を設定するオブジェクトを渡します:

プロパティ説明デフォルト
onConnectionFormula新規接続が確立した時にトリガーされるコールバック。 このフォーミュラは2つの引数($listener および $event、以下参照)を受け取り、接続を阻止するためにnull/undefined か、またはTCPConnection を作成するのに使用される option オブジェクトのいずれかを返さなかればなりません。未定義
onErrorFormulaエラーの場合にトリガーされるコールバック. このフォーミュラは*$listener* に TCPListener オブジェクトを受け取ります。未定義
onTerminateFormulaTCPListener が閉じられる直前にトリガーされるコールバック。 このフォーミュラは*$listener* に TCPListener オブジェクトを受け取ります。未定義

コールバック関数

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

引数説明
$listenerTCPListener オブジェクトカレントのTCP リスナーインスタンス
$eventTCPEvent オブジェクトイベントに関する情報が含まれているオブジェクト

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

  1. onConnection は接続が確立したときに毎回トリガーされます。
  2. onError はエラーが発生した場合にトリガーされます。
  3. onTerminate は接続が終了する直前に必ずトリガーされます。

TCPEvent オブジェクト

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

.errors

errors : Collection

説明

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

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

.port

port : Number

説明

.port プロパティは、マシンのポート番号を格納します。 このプロパティは 読み取り専用 です。

.terminate()

.terminate()

引数説明
引数を必要としません

説明

terminate() 関数はリスナーを閉じ、ポートを閉じます。