Google

Go to the first, previous, next, last section, table of contents.


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
参照
section ox_launch, ox_launch_nox, ox_shutdown, section ox_launch_generic, section shell, section ox_push_cmo, ox_push_local


Go to the first, previous, next, last section, table of contents.