version 6.8.1 (Modified)
TCP_Listen (remoteHost; localPort; remotePort; timeout; tcp_ID) --> 整数
引数 | Type | 説明 | |
remoteHost | 文字列 | --> | ホスト名またはIPアドレス |
空の文字列を含む変数を渡した場合、接続したホストのIPアドレス | |||
localPort | 整数 | --> | ローカルポート番号, 0 = 未使用のポートを検索 |
使用したローカルポート番号 (0を渡した場合) | |||
remotePort | 整数 | --> | 待ち受けポート番号 |
timeout | 整数 | --> | 待ち受け秒数, 0 = 永久に待つ |
tcp_ID | 倍長整数 | このTCPセッションへの参照 | |
戻り値 | 整数 | エラーコード |
説明
TCP_Listen コマンドは、remoteHostで指定したマシンからの、remotePortで指定したポート番号の接続を待ちます。このコマンドは、接続が確立されるか、timeoutが経過するまで、4Dにコントロールを返しません。接続が確立されるまでデータベースがロックしたかのように見えますが、このコマンドは他の4Dプロセスに対し有効に振舞います。このコマンドは、既に起動されている4Dプロセスに対し、時間をスライスします。
ほとんどの4Dデベロッパは、独自の4Dプロセスで実行されるメソッドからこのコマンドをコールするでしょう (特にtimeoutをなしにする場合)。
remoteHost は接続を待ちうける先のマシンのホスト名またはIPアドレスです。
- 空の文字列が渡された場合、このコマンドはすべてのマシンからの接続を待ちうけます。
- 空の文字列を含む変数を渡した場合、接続したマシンのIPアドレスが変数に返されます。
Note: Windowsでは、remoteHostにIPアドレスを受け付けないことがあります。これが発生した場合、エラー?10049 “Specified address is not available from the local machine”が生成されます。そのため、IPアドレスによるフィルタが必要な場合、空の文字列を含んだ変数の使用をお勧めします。
localPortには、通信に使用するローカルマシンのポート番号を渡します。この引数に0を渡すと、コマンドは未使用のポート番号を探し、この引数に返します。
remotePortには、接続を待ちうけるポート番号を指定します。
Note: TCP_Listen (やTCP_Open) をコールした後、remotePortに渡した値が32767より大きい場合、マイナスの値が格納されていることがあります。このことは接続に影響ありません。
これを避けたい場合、代わりの変数を使用します:
$v_ RemotePort:=v_ RemotePort $err:=TCP_Listen (v_ RemoteHostIPAdr;0;$v_ RemotePort;30;v_ SessionID)
timeoutには、このコマンドが接続を待ちうける待ち秒数を指定します。この引数に0を渡すと、コマンドは永遠に接続を待ちうけます。0を渡すことには注意が必要です。接続が来ない場合、このコマンドを呼び出した4Dプロセスにはコントロールが返らなくなります。シングルプロセスデータベースの場合、0を渡してはいけません。
tcp_ID には、開かれたセッションの参照が返されます。この参照は、このセッションを参照するTCPコマンドで使用されます。
TCP_ListenコマンドによるすべてのTCP接続は、TCP_Close コマンドで閉じなければなりません。
例題
C_LONGINT(vTCPID) C_INTEGER(vStatus) $err:=TCP_Listen ("";0;49152;30;vTCPID) $err:=TCP_State (vTCPID;vStatus) If (vStatus=8) `接続が確立された
DoSomething $err:=TCP_Close (vTCPID) End if
参照
Appendix B - TCPポート番号, TCP_Open, TCP_State.