`generate_port', `try_bind_listen', `try_connect', `try_accept', `register_server'
----------------------------------------------------------------------------------

generate_port([USE_UNIX])
     :: port の生成

try_bind_listen(PORT)
     :: port に対して bind, listen

try_connect(HOST,PORT)
     :: port に対して connect

try_accept(SOCKET,PORT)
     :: connect 要求を accept

register_server(CONTROL_SOCKET,CONTROL_PORT,SERVER_SOCKET,SERVER_PORT)
     :: connection の成立した control socket, server socket の登録

RETURN
     `generate_port()' のみ整数または文字列. その他は整数.

USE_UNIX
     0 または 1

HOST
     文字列

PORT CONTROL_PORT SERVER_PORT
     整数または文字列

SOCKET CONTROL_SOCKET SERVER_SOCKET
     整数

   * これらの関数は,
     遠隔プロセスと通信を成立させるためのプリミティブである.

   * `generate_port()' は通信のための port を生成する. 無引数あるいは
     引数が 0 の場合, Internet domain の socket のための port 番号, それ
     以外の場合には, UNIX domain (host-internal protocol) のための,
     ファイル名 を生成する. port 番号は random に生成されるが, その
     port が使用中でない 保証はない.

   * `try_bind_listen()' は, 与えられた port に対し, その protocol に
     対応した socket を生成し, bind, listen する. 成功した場合, socket
     識別子を返す. 失敗した場合, -1 が返る.

   * `try_connect()' は, ホスト HOST の port PORT に対し connect
     を試みる. 成功した場合, socket 識別子を返す. 失敗した場合 -1
     が返る.

   * `try_accept()' は, SOCKET に対する connect 要求を accept し,
     新たに生成された socket を返す. 失敗した場合 -1 が返る.
     いずれの場合にも, SOCKET は自動的に close される.  引数 PORT は,
     SOCKET の protocol を判別するために与える.

   * `register_server()' は, control, server それぞれの socket を
     一組にして, server list に登録し, `ox_push_cmo()' などで用いる
     プロセス識別子を返す.

   * 遠隔プロセスの起動は, `shell()' または手動で行う.

     [340] CPort=generate_port();
     39896
     [341] SPort=generate_port();
     37222
     [342] CSocket=try_bind_listen(CPort);
     3
     [343] SSocket=try_bind_listen(SPort);
     5
     
     /*
     ここで, ox_launch を起動 :
     %  ox_launch "127.1" 0 39716 37043 ox_asir "shio:0"
     */
     
     [344] CSocket=try_accept(CSocket,CPort);
     6
     [345] SSocket=try_accept(SSocket,SPort);
     3
     [346] register_server(CSocket,CPort,SSocket,SPort);
     0

参照
     *Note `ox_launch ox_launch_nox ox_shutdown': ox_launch
     ox_launch_nox ox_shutdown, *Note `ox_launch_generic':
     ox_launch_generic, *Note `shell': shell, *Note `ox_push_cmo
     ox_push_local': ox_push_cmo ox_push_local

