WSNewLinkServer (C 関数)

WSLinkServer WSNewLinkServer(WSENV e, void *c, int *err)

コンテキストオブジェクト c を使って,ポート上の新しいTCPIPリンクサーバ,およびWSTPライブラリが察知したインターフェースを開始し,err のエラー条件を返す.

詳細

  • Wolfram Symbolic Transfer Protocolを通常の状態で使用する場合には,プロセス間で行われた接続は,1対1で働く.つまり,プログラムAがプログラムBに接続された場合,AとBのみがAとBの間に設定された交信の端点を使うことができるということである.この1対1のモデルは,従来のクライアントとサーバの交信モデル(サーバが1対多数のモードでの接続を宣伝し,サーバが1つの接続を持ち,多くのクライアントがその1つの接続に繋ぐ)とは異なる. The WSTPのリンクサーバ機能は,ユーザがWolfram Symbolic Transfer Protocolを使って1対多数の接続を提供するプログラムを作成することを可能にする.
  • WSNewLinkServer()は,TCPIPリンクプロトコルのWSTPの端点を,数多くのクライアントが接続できるネットワーク上に作成する.
  • WSNewLinkServer()は,WSTPのインターフェース4に互換性のあるプログラムでのみ接続可能なWSTPの端点を作成する.
  • WSNewLinkServer()は,リンクサーバに使うポートとインターフェースをWSTPライブラリが選べるようにする.
  • リンクサーバオブジェクトは,関数WSWaitForNewLinkFromLinkServer()で同期的に,あるいはWSRegisterCallbackFunctionWithLinkServer()でコールバック関数を登録することによって非同期的に処理できる,入ってくる接続を待ち行列にする.
  • コンテキストオブジェクト c は,リンクサーバによって作成されたリンク接続を管理するためにプログラムが必要とする任意のオブジェクトへのポインタである場合もある.ユーザは,関数WSContextFromLinkServer()を使ってコンテキストオブジェクトを取り出すことができる.
  • WSNewLinkServer()は,関数が成功した場合には err を0に設定し,関数が失敗した場合には非零の値に設定する.
  • エラーの条件を示す非零の値は,wstp.hWSEエラーコードに対応し,WSError()で返されるものと同じである.
  • WSShutdownLinkServer()を使うと,リンクサーバ構造を終了することができる.

例題

  (1)

#include "wstp.h"

void operateLinkServer(WSENV env)
{
    int error;
    WSLinkServer linkServer;
    WSLINK theLink;


    linkServer = WSNewLinkServer(env, NULL /* No context object for
        this example */, &error);
    if(error != WSEOK)
    { /* Handle error */ }

    theLink = WSWaitForNewLinkFromLinkserver(linkServer, &error);
    if(theLink == (WSLINK)0 || error != WSEOK)
    { /* Handle error */ }

    ...

    WSCLose(theLink);

    WSShutdownLinkServer(linkServer);
}