UNIXストリーム型接続のサーバ側のソケットのクラス。
accept
クライアントからの接続要求を受け付け、接続した UNIXSocketのインスタンスを返します。
UNIXServer.open("/tmp/s") {|serv| c = UNIXSocket.open("/tmp/s") s = serv.accept s.write "from server" c.write "from client" p c.recv(20) #=> "from server" p s.recv(20) #=> "from client" }
accept_nonblock
ソケットをノンブロッキングモードに設定した後、
accept(2)
を呼び出します。
引数、返り値は accept と同じです。
accept(2)
がエラーになった場合、
EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
listen(backlog)
(ruby 1.7 feature)backlog は、クライアントからの接続要求を保留できる数です。 UNIXServer のインスタンスは最初は backlog の値は 5 で生成されます。
listen(2) が成功すれば 0 を返します。 失敗すれば 例外 Errno::EXXX が発生します。
sysaccept
(ruby 1.7 feature)接続したクライアントのソケットをファイル記述子で返すことを除けば accept と同じです。
UNIXServer.open("/tmp/s") {|serv| c = UNIXSocket.open("/tmp/s") p serv.sysaccept #=> 6 }