要約
インターネットドメインソケットの抽象クラス。
通常の IO クラスのサブクラスと同様の入出力ができます。
目次
- 特異メソッド
- インスタンスメソッド
継承しているメソッド
- BasicSocketから継承しているメソッド
- IOから継承しているメソッド
-
- <<
- advise
- autoclose=
- autoclose?
- binmode
- binmode?
- bytes
- chars
- clone
- close
- close_on_exec=
- close_on_exec?
- close_read
- close_write
- closed?
- codepoints
- dup
- each
- each_byte
- each_char
- each_codepoint
- each_line
- eof
- eof?
- external_encoding
- fcntl
- fdatasync
- fileno
- flush
- fsync
- getbyte
- getc
- gets
- internal_encoding
- ioctl
- isatty
- lineno
- lineno=
- lines
- pid
- pos
- pos=
- pread
- printf
- putc
- puts
- pwrite
- read
- read_nonblock
- readbyte
- readchar
- readline
- readlines
- readpartial
- reopen
- rewind
- seek
- set_encoding
- stat
- sync
- sync=
- sysread
- sysseek
- syswrite
- tell
- to_i
- to_io
- tty?
- ungetbyte
- ungetc
- write
- write_nonblock
- Enumerableから継承しているメソッド
-
- all?
- any?
- chunk
- chunk_while
- collect
- collect_concat
- count
- cycle
- detect
- drop
- drop_while
- each_cons
- each_entry
- each_slice
- each_with_index
- each_with_object
- entries
- find
- find_all
- find_index
- first
- flat_map
- grep
- grep_v
- group_by
- include?
- inject
- lazy
- map
- max
- max_by
- member?
- min
- min_by
- minmax
- minmax_by
- none?
- one?
- partition
- reduce
- reject
- reverse_each
- select
- slice_after
- slice_before
- slice_when
- sort
- sort_by
- sum
- take
- take_while
- to_a
- to_h
- uniq
- zip
特異メソッド
getaddress(host) -> String
[permalink][rdoc][edit] [redefined by resolv-replace]-
IPSocket.getaddress を置きかえ、 resolv ライブラリを使い名前解決します。
- [PARAM] host:
- ホスト名を指定します。
- [EXCEPTION] SocketError:
- 名前解決に失敗した場合に発生します。
getaddress(host) -> String
[permalink][rdoc][edit]-
ホスト名からホストのアドレスを返します。ホストのアドレスは文字列は octet decimal の文字列 (例: 127.0.0.1) です。
- [PARAM] host:
- ホスト名を文字列で指定します。
例:
require 'socket' p IPSocket.getaddress("www.ruby-lang.org") #=> "210.163.138.100"
インスタンスメソッド
addr -> Array
[permalink][rdoc][edit]-
ソケットの接続情報を表す配列を返します。配列の各要素は第1要素が文字列 "AF_INET", "AF_INET6" など、第2要素が port 番号、第3要素がホストを表す文字列、第4要素がホストの IP アドレスを表す文字列 (octet decimal や hexadecimal) です。
- [EXCEPTION] Errno::EXXX:
- getsockname(2) が 0 未満の値を返した場合に発生します。
例:
require 'socket' serv = TCPServer.new("localhost", 0) p serv.addr #=> ["AF_INET", 46102, "localhost.localdomain", "127.0.0.1"] c = TCPSocket.new(*serv.addr.values_at(3,1)) s = serv.accept
peeraddr -> Array
[permalink][rdoc][edit]-
接続相手先ソケットの情報を表す配列を返します。配列の各要素は IPSocket#addr メソッドが返す配列と同じです。
- [EXCEPTION] Errno::EXXX:
- getpeername(2) が 0 未満の値を返した場合に発生します。
例:
require 'socket' TCPSocket.open("localhost", "http") {|s| p s.peeraddr #=> ["AF_INET", 80, "localhost.localdomain", "127.0.0.1"] p s.addr #=> ["AF_INET", 52615, "localhost.localdomain", "127.0.0.1"] }
recvfrom(maxlen, flags = 0) -> Array
[permalink][rdoc][edit]-
recv と同様にソケットからデータを受け取りますが、戻り値は文字列と相手ソケットのアドレス (形式は IPSocket#addr 参照) のペアです。引数については BasicSocket#recv と同様です。
- [PARAM] maxlen:
- 受け取る文字列の最大の長さを指定します。
- [PARAM] flags:
- recv(2) を参照してください。
- [EXCEPTION] IOError:
- [EXCEPTION] Errno::EXXX:
- recvfrom(2) がエラーになった場合などに発生します。
例:
require 'socket' s1 = UDPSocket.new s1.bind("0.0.0.0", 0) # 適当に空いている port を割り当てる s2 = UDPSocket.new s2.send("foo", 0, s1.getsockname) mesg, inet_addr = s1.recvfrom(100) p mesg #=> "foo" p inet_addr #=> ["AF_INET", 32876, "localhost.localdomain", "127.0.0.1"]