Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > socketライブラリ > UNIXSocketクラス

class UNIXSocket

クラスの継承リスト: UNIXSocket < BasicSocket < IO < Enumerable < File::Constants < Object < Kernel < BasicObject

Abstract

UNIX ドメインのストリーム型ソケットのクラス。通常の IO クラスのサブクラスと同様の 入出力ができます。

特異メソッド

open(path)
new(path)

path で指定したパス名を用いて接続したソケットを返 します。

pair([type[, protocol]])
socketpair([type[, protocol]])

相互に結合された UNIX ソケットのペアを含む2要素の配列を返します。 type が省略された場合、Socket::SOCK_STREAM が使われます。 protocol が省略された場合、0 が使われます。

インスタンスメソッド

addr

ソケットの接続情報を表す配列を返します。配列の各要素は第1要 素が文字列 "AF_UNIX"、第2要素がパスを表す文字列です。

例:

UNIXServer.open("/tmp/s") {|serv|
  p serv.addr     #=> ["AF_UNIX", "/tmp/s"]
}
path

UNIX ソケットのパスを返します。

例:

UNIXServer.open("/tmp/s") {|serv|
  p serv.path     #=> "/tmp/s"
}
peeraddr

接続相手先ソケットの情報を表す配列を返します。配列の各要素は UNIXSocket#addr メソッドが返す配列 と同じです。

例:

UNIXServer.open("/tmp/s") {|serv|
  c = UNIXSocket.open("/tmp/s")
  p c.peeraddr    #=> ["AF_UNIX", "/tmp/s"]
}
recv_io([klass[, mode]])

ソケットの接続先からファイルディスクリプタを受け取ります。

klass が nil の場合、ファイルディスクリプタが Fixnum として 返されます。

klass が nil でない場合、 klass.for_fd(fd[, mode]) が呼ばれ、その値が返されます。 klass が省略された場合は IO が指定されたものとみなされ、 IO.for_fd(fd[, mode]) が呼ばれます。

例:

s1, s2 = UNIXSocket.pair
s1.send_io STDOUT
io = s2.recv_io
p File.identical?(io, STDOUT)     #=> true
recvfrom(maxlen[, flags])

recv と同様にソケットからデータを受け取りますが、 戻り値は文字列と相手ソケットのパスのペアです。引数につい ては recv と同様です。

例:

UNIXServer.open("/tmp/s") {|serv|
  c = UNIXSocket.open("/tmp/s")
  s = serv.accept
  s.send "a", 0
  p c.recvfrom(10)[0]     #=> "a"
}
send_io(io)

IO や Fixnum に対応するファイルディスクリプタをソケットの接続先に送ります。

Methods

Classes