ソケット、プロセス、およびストリーム入出力
SenseTalkは、ソケット、プロセス、および標準入出力ストリーム(つまり、stdin、stdout、stderr)の読み書きのための一連のコマンドを提供します。基本的に、これらの形式はすべてデータストリームとして扱うことができます。 readおよびwriteコマンドには、多くの形式の数字、テキスト、および生のバイナリデータを含む任意のタイプのデータを簡単に読み書きするための多くのオプションが含まれています。 HTTPとXML-RPCメッセージも直接サポートされており、インターネット上の多くのサーバーとの通信をさらに簡単にします。
ストリームの種類によって詳細が異なる場合がありますが、それらすべてを利用する基本的なプロセスは同じシーケンスに従います: open、readおよび/またはwrite、close。 このシーケンスの主な例外は、標準入力、標準出力、および標準エラーストリームは常に開いていると見なされるため、開くまたは閉じる必要がないことです。
ソケット、プロセス、ストリームデータを操作するために使用するコマンドと関数は、ファイルやファイルシステムオブジェクトを操作するために使用できるコマンドと関数に似ています。 ファイルおよびファイルシステムの操作についての情報については、File and Folder Interactionを参照してください。
ソケット入出力コマンド(open socket、close socket、read from socket、およびwrite … to socket)を使用すると、別のプロセスが提供するソケットへの接続を開き、その接続を通じてデータを読み書きすることができます。
同様に、プロセス入出力コマンド(open process、close process、read from process、およびwrite … to process)を使用すると、外部プロセスを起動し、そのプロセスの標準入力に書き込み、標準出力から読み取ることにより通信することができます。
readおよびwriteコマンドはまた、標準入力から読み取り、標準出力または標準エラーストリームに書き込むためにも使用できます(read from input、write … to output、write … to error)。
openSockets 関数と openProcesses 関数は、それぞれ現在開いているすべてのソケットまたはプロセスのリストを返します。
The DefaultStringEncodingグローバルプロパティは、ファイルまたはソケットからテキストを読み取るか書き込むときに使用されるエンコーディング形式を制御します。
Open Socketコマンド
Behavior: open socketコマンドは、ソケットから何かを読み取るか、そのソケットにreadまたはwriteコマンドを使用して何かを書き込む前に使用する必要があります。ソケットの使用が終了したら、close socketコマンドを使用して閉じる必要があります。
Open socketは、別のプロセス(プログラム)へのTCPソケット接続を確立します。その他のプロセスは、同じコンピューター上で実行されているか、またはネットワーク上の他のコンピューター上で実行されている可能性があります。それはすでに実行されており、SenseTalkが接続できるソケットを登録している必要があります。接続が確立されると、データは両方の側が理解する方法でどちらの方向にも送信される可能性があります。
構文:
open socket socketIdentifier
_socketIdentifier_は、_host:port_の形式でなければなりません。ここで、_host_はマシンの名前またはIPアドレスであり、_port_は接続するソケットのそのマシンのポート番号です。
_socketIdentifier_は、任意の数値または識別子文字列に続くポンド記号#(または垂直バー|)文字で終わる場合があります。これは、同じホストとポートに対して複数の接続を確立し、各接続を一意に識別するための識別子を複数作成することを可能にします - 正しい接続を識別するためにread、write、およびcloseコマンドで適切な_socketIdentifier_を使用するだけです。
ソケット接続がthe readTimeoutグローバルプロパティで指定された時間内に確立できない場合、例外がスローされます。現在開いているすべてのソケットのリストを取得するためにopenSockets関数を使用します。
例:
open socket remoteListener
例:
open socket "192.168.1.4:22"
例:
open socket "localhost:5900#2"