WSTPを使ったWolframシステムセッション間の通信

LinkCreate["name"]
別プログラムと通信するためのリンクを作成する
LinkConnect["name"]
別プログラムで作成されたリンクと接続する
LinkClose[link]
WSTP接続を閉じる
LinkWrite[link,expr]
式をWSTP接続に書き込む
LinkRead[link]
WSTP接続から式を読み出す
LinkRead[link,Hold]
式を読み出し,即座にその式をHoldで包み込む
LinkReadyQ[link]
リンクに読出し可能なデータがあるかどうかをチェックする
LinkReadyQ[link,t]
式が読む準備ができているかどうかを調べるのに t 秒まで待つ
LinkReadyQ[{link1,link2,}]
リンクのうちのひとつから読む準備のできたデータがあるかどうかを調べる
LinkReadyQ[{link1,link2,},t]
式が読む準備ができているかどうかを調べるのに t 秒まで待つ
Wolframシステムセッション間のWSTP接続

セッション A

8000番のポートでリンクをスタートさせる:

セッション B

8000番ポートのリンクと接続する:

セッション A

15!を評価し,リンクにそれを書き込む:

セッション B

リンクから読み出すと送信した15!が得られる:
リンクにデータを書き戻す:

セッション A

セッションBで書き込んだデータを読み出す:
Wolfram Symbolic Transfer Protocol (WSTP)接続を使えば,Wolframシステムセッション間の中間ファイルを使わないデータ転送が可能になる.
その他の使い道としては,計算の一部を別のセッションに送ることがある.

セッション A

2+2を評価せずにリンクに書き込む:

セッション B

リンクから式を読み出し,即座にHoldで包み込む:
式を評価する:
リンクがLinkWriteLinkReadLinkActivateのいずれかへの完了した呼出しを介してアクティベートされた場合,式はバッファに書き出される.式全体がバッファにフィットする場合,LinkWriteは対応するLinkReadを必要とすることなく直ちに戻る.しかし,LinkReadを呼び出すと,これはWSTP接続から式を完全に読み出すまで戻らない.
読出しが可能かどうかをLinkReadyQ[link]の呼出しで知ることができる.LinkReadyQTrueを返したら,安全にLinkReadを呼び出し,式を読み込むことができる.LinkReadyQFalseを返した場合,LinkReadは読み出すべき式をもう一方のWolframシステムセッションのLinkWriteが書き込むまでブロックする.

セッション A

読まれるべきものがリンク上にない.LinkReadが呼ばれると,ブロックする:

セッション B

リンクに式を書く:

セッション A

読出しを待っている式がリンク上に存在する:
LinkReadをブロックされる恐れなしに呼び出すことができる:
LinkReadyQはリンクオブジェクトのリストを取り,読むデータがあるかどうかを判断するために各リンクを並列で評価することができる.単独のリンクの場合のように,第2引数でタイムアウトの周期を指定するため,LinkReadyQはリンクのいずれかが使う準備ができるまで待つことになる.
LinkCreate[LinkProtocol->"TCPIP"]
コンピュータが使用していないポートを取得する
LinkCreate["number",LinkProtocol->"TCPIP"]
特定のポートを使用する
LinkConnect["number",LinkProtocol->"TCPIP"]
同一コンピュータのポートに接続する
LinkConnect["number@host",LinkProtocol->"TCPIP"]
別のコンピュータのポートに接続する
TCP/IPでWSTPのリンクを設定する方法
コンピュータシステムがサポートしていれば,いかなるプログラム間通信のメカニズムでもWSTPは利用することができる.並列するWolframシステムセッション間の接続を確立するには,インターネットのTCPポートを利用することが一般的である.
ほとんどのコンピュータシステムには利用可能なポートが数千個あり,そのうちのいくつかは標準的なサービスにすでに利用されている.
未使用のポートはWSTP接続に使うことができる.

frog.wolfram.com上のセッション

frog.wolfram.comが使用していないポートを見付ける:

toad.wolfram.com上のセッション

frog.wolfram.comのポートに接続する:
マシン名をリンク上で転送する:

frog.wolfram.com上のセッション

toadに書かれた式を読む:
インターネットのポートをWSTP接続に利用すれば,異なるWolframシステムセッション間でのデータ転送を簡単に行うことができる.インターネット接続が転送を実行するマシン間にあればよい.
WSTPは全くシステムに依存していないため,WSTP接続の両端のコンピュータが同一の種類である必要はない.ただし,実際のリンクでは,コンピュータの機種の違いからくるデータ形式の違い等に対処するためにWSTP内で転送処理に対する最適化が図られる.