モジュール
- Timeout (21)
キーワード
- getaddrinfo (12)
- socket (12)
- timeout (21)
検索結果
先頭5件
-
Socket
. gethostbyname(host) -> Array (18119.0) -
ホスト名または IP アドレス(指定方法に関しては lib:socket#host_formatを参照) からホストの情報を返します。
...きます。
=== 使用例
irb(main):009:0> require 'socket'
irb(main):009:0> Socket.gethostbyname("210.251.121.214")
["helium.ruby-lang.org", ["helium"], 2, "\322\373y\326"]
irb(main):009:0> Socket.unpack_sockaddr_in(Socket.gethostbyname("210.251.121.214")[3])[1]
"210.251.121.214"... -
TCPSocket
. gethostbyname(host) -> Array (18119.0) -
ホスト名または IP アドレス (整数または"127.0.0.1" のような文字列)からホストの情報を返します。ホスト情報は、ホ スト名、ホストの別名の配列、ホストのアドレスタイプ、ホストの アドレスを各要素とする配列です。ホストのアドレスは octet decimal の文字列 ("127.0.0.1"のような文字列) や IPv6 アドレス ("::1" のような文字列) です。
...。
@return ホスト名、ホストの別名の配列、ホストのアドレスタイプ、ホストのアドレスを各要素とする配列を返します。
例:
require 'socket'
p TCPSocket.gethostbyname("www.ruby-lang.org")
#=> ["beryllium.ruby-lang.org", [], 2, "210.163.138.100"]... -
socket (72.0)
-
socket はプロセス外部との通信 (プロセス間通信、ホスト間通信) を実現します。
...y-lang.org", "http") => [#<Addrinfo: 221.186.184.68:80 TCP (www.ruby-lang.org:http)>]
* IPSocket.getaddress("www.ruby-lang.org") => "210.163.138.100"
* TCPSocket.gethostbyname("www.ruby-lang.org") => ["beryllium.ruby-lang.org", [], 2, "210.163.138.100"]
* Socket.gethostbyname("www.ruby-lang.o......rg") => ["beryllium.ruby-lang.org", [], 2, "\322\243\212d"]
* Socket.getaddrinfo("www.ruby-lang.org", "http") => [["AF_INET", 80, "beryllium.ruby-lang.org", "210.163.138.100", 2, 1, 6]]
逆に IP アドレスからホスト名への変換 (逆引き) を行うメソッドは以下のものが用......意されています。
* Socket.getnameinfo([nil, nil, nil, "210.163.138.100"]) => ["beryllium.ruby-lang.org", 0]
* Addrinfo#getnameinfo Addrinfo.ip("127.0.0.1").getnameinfo => ["localhost", "0"]
また、resolv ライブラリも使用できます。... -
Socket
. getaddrinfo(nodename , servname , family=nil , socktype=nil , protocol=nil , flags=nil) -> Array (40.0) -
2553で定義された getaddrinfo() の機能を提供するクラスメソッド。この関数は gethostbyname() や getservbyname() の代わりとして用意されており、 IP のバージョンに依存しないプログラムを書くための標準的な API です。
...2553で定義された
getaddrinfo() の機能を提供するクラスメソッド。この関数は
gethostbyname() や getservbyname() の代わりとして用意されており、
IP のバージョンに依存しないプログラムを書くための標準的な API です。
@param nodename......ium.ruby-lang.org", "210.251.121.214", 2, 1, 6]]
pp Socket.getaddrinfo(Socket.gethostname, nil)
#=> [["AF_INET", 0, "helium.ruby-lang.org", "210.251.121.214", 2, 1, 6],
# ["AF_INET", 0, "helium.ruby-lang.org", "210.251.121.214", 2, 2, 17],
# ["AF_INET", 0, "helium.ruby-lang.org", "2... -
Timeout
. # timeout(sec , exception _ class = nil) {|i| . . . } -> object (30.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...の処理を Ruby で実装しなおすか C 側で Ruby
のスレッドを意識してあげる必要があります。
以下の例では、gethostbyname(およそ0.6秒処理に時間がかかっている) が終了した直後((A)の箇所)で Timeout::Error 例外があがっています。......ket'
t = 0.1
start = Time.now
begin
Timeout.timeout(t) {
p TCPSocket.gethostbyname("www.ruby-lang.org")
# (A)
}
ensure
p Time.now - start
end
# 実行例
=> ["helium.ruby-lang.org", [], 2, "210.251.121.214"]
0.689331
/usr/local/lib/ruby/1.6/timeout.rb......:37: execution expired (Timeout::Error)
from -:6:in `timeout'
from -:6
# gethostbyname が0.1秒かからない場合は例外が発生しないので
# その場合は、t に小さい数値(0.000001のような)に変える。
timeout による割り込みは Kernel.#sy... -
Timeout
. # timeout(sec , exception _ class , message) {|i| . . . } -> object (30.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...の処理を Ruby で実装しなおすか C 側で Ruby
のスレッドを意識してあげる必要があります。
以下の例では、gethostbyname(およそ0.6秒処理に時間がかかっている) が終了した直後((A)の箇所)で Timeout::Error 例外があがっています。......ket'
t = 0.1
start = Time.now
begin
Timeout.timeout(t) {
p TCPSocket.gethostbyname("www.ruby-lang.org")
# (A)
}
ensure
p Time.now - start
end
# 実行例
=> ["helium.ruby-lang.org", [], 2, "210.251.121.214"]
0.689331
/usr/local/lib/ruby/1.6/timeout.rb......:37: execution expired (Timeout::Error)
from -:6:in `timeout'
from -:6
# gethostbyname が0.1秒かからない場合は例外が発生しないので
# その場合は、t に小さい数値(0.000001のような)に変える。
timeout による割り込みは Kernel.#sy...