[#14850] str[re, -1] raises NoMemoryError — nobu.nakada@...
なかだです。
6 messages
2001/10/03
[#14888] perl6 apocalypse 3 — nobu.nakada@...
なかだです。
7 messages
2001/10/04
[#14903] Re: [rubyist:0825] Re: Thread — nobu.nakada@...
なかだです。
8 messages
2001/10/09
[#14909] ext/socket h_addr_list — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
9 messages
2001/10/11
[#14922] alias $gvar — Koji Arai <JCA02266@...>
新井です。
19 messages
2001/10/14
[#14941] Re: alias $gvar
— matz@... (Yukihiro Matsumoto)
2001/10/16
まつもと ゆきひろです
[#14924] Re: alias $gvar
— nobu.nakada@...
2001/10/14
なかだです。
[#14932] Re: alias $gvar
— nobu.nakada@...
2001/10/15
なかだです。
[#14934] Re: alias $gvar
— Koji Arai <JCA02266@...>
2001/10/15
新井です。
[#14942] [BUG] SEGV: module_eval — Satoru Takabayashi <satoru@...>
こんなことする方が悪いという気がしますが、次のコードを実行す
5 messages
2001/10/16
[#14961] [PATCH] Marshal.load/dump — nobu.nakada@...
なかだです。
9 messages
2001/10/18
[#14962] alias var and trace_var — "K.Kosako" <kosako@...>
新井さんの指摘から、中田さんのパッチで
12 messages
2001/10/19
[#14963] Re: alias var and trace_var
— nobu.nakada@...
2001/10/19
なかだです。
[#14965] Re: alias var and trace_var
— "K.Kosako" <kosako@...>
2001/10/19
nobu.nakada@nifty.ne.jpさんの
[#14967] Re: alias var and trace_var
— nobu.nakada@...
2001/10/19
なかだです。
[#14971] Re: alias var and trace_var
— "K.Kosako" <kosako@...>
2001/10/22
nobu.nakada@nifty.ne.jpさんの
[#14984] [PATCH] stack overflow while GC marking. — nobu.nakada@...
なかだです。
7 messages
2001/10/23
[#14987] tracer.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
5 messages
2001/10/23
[#14998] TCPSocket.gethostbyname で Segmentation fault — tomohiko machida <machida@...>
はじめまして。
4 messages
2001/10/25
[#15001] finalizer problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
3 messages
2001/10/25
[#15006] Re: eval.c (rb_stack_check): prohibit recursive raising error — WATANABE Hirofumi <eban@...>
わたなべです。
13 messages
2001/10/26
[#15008] Re: eval.c (rb_stack_check): prohibit recursive raising error
— Shugo Maeda <shugo@...>
2001/10/26
前田です。
[#15207] Re: eval.c (rb_stack_check): prohibit recursive raising error
— nobu.nakada@...
2001/11/19
なかだです。
[#15209] Re: eval.c (rb_stack_check): prohibit recursive raising error
— matz@... (Yukihiro Matsumoto)
2001/11/19
まつもと ゆきひろです
[#15210] Re: eval.c (rb_stack_check): prohibit recursive raising error
— nobu.nakada@...
2001/11/19
なかだです。
[#15211] Re: eval.c (rb_stack_check): prohibit recursive raising error
— matz@... (Yukihiro Matsumoto)
2001/11/19
まつもと ゆきひろです
[#15212] Re: eval.c (rb_stack_check): prohibit recursive raising error
— nobu.nakada@...
2001/11/19
なかだです。
[#15214] Re: eval.c (rb_stack_check): prohibit recursive raising error
— matz@... (Yukihiro Matsumoto)
2001/11/19
まつもと ゆきひろです
[ruby-dev:14909] ext/socket h_addr_list
From:
WATANABE Tetsuya <tetsu@...>
Date:
2001-10-11 07:36:37 UTC
List:
ruby-dev #14909
渡辺哲也です。
相談なのですが、
TCPSocket.gethostbyname(hostname)
で、一つのホストが複数の IP address を持って
いる場合、うまくとれないようです。
急ぎで解決策を望むのではないのですが、とりあ
えずおしらせということで。
------------------------------
$ nslookup www.yahoo.com
Server: 省略
Address: 省略
Non-authoritative answer:
Name: www.yahoo.akadns.net
Addresses: 216.115.102.78, 216.115.102.77, 216.115.105.2, 216.115.102.79
216.115.102.80
Aliases: www.yahoo.com
------------------------------
------------------------------
$ echo www.yahoo.com | ruby nslookup.rb
["w8.snv.yahoo.com", [], 2, "216.115.102.80"]
216.115.102.80 w8.snv.yahoo.com
------------------------------
確認に使ったスクリプトです。
------------------------------
require 'socket'
while ip = gets
ip.chop!
begin
arr = TCPSocket.gethostbyname(ip)
p arr
print "#{arr[3]}\t#{arr[0]}\n"
rescue SocketError
print "#{ip}\n"
end
end
------------------------------
ext/socket/socket.c を読んでみたのですが、一
度「代表されるようなホスト名」から「IP
address」へ変換して、IP address を struct
hostent * の要素のh_addr_list から Array ク
ラスに push しようとしています。ですが、IP
address にしてしまった時点で、上記の例のよう
に「代表されるようなホスト名」が「特定のホス
ト名」に変換されてしまうので、IP address が
一つしかとれないのではないかと思います。
Ruby の場合、ホスト名に便利な使い方があった
りするので、修正は簡単ではないとは思いますが...
ちなみに socket.c の
tcp_s_gethostbyname(obj, host) 中にある
h = gethostbyaddr((char *)&sin->sin_addr,
sizeof(sin->sin_addr),
sin->sin_family);
を
h = gethostbyname(RSTRING(host)->ptr);
にすると、次のような結果になります。コードと
しては、複数の IP address に対応するようになっ
ているので、意図はこちらではないかなと思いま
す。
------------------------------
$ echo www.yahoo.com | ruby nslookup.rb
["www.yahoo.akadns.net", ["www.yahoo.com"], 2, "216.115.102.78", "216.115.102.77", "216.115.105.2", "216.115.102.79", "216.115.102.80"]
216.115.102.78 www.yahoo.akadns.net
------------------------------
ということで、とりあえずおしらせしておきます。