[#7300] resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>

あんまり ruby-dev な話でも無いのですが、ちょっとした機能拡張の提案なので、

12 messages 1999/07/12
[#7321] Re: resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...> 1999/07/15

From: Toshihiko SHIMOKAWA / 下川俊彦 <toshi@csce.kyushu-u.ac.jp>

[#7313] Ruby 1.3.5 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.5 is out, check out:

59 messages 1999/07/15
[#7318] Re: Ruby 1.3.5 — WATANABE Hirofumi <watanabe@...> 1999/07/15

わたなべです.

[#7326] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/15

青山です。

[#7331] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/16

まつもと ゆきひろです

[#7340] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/16

青山です。

[#7368] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7373] Re: Ruby 1.3.5 — Shin-ichiro Hara <sinara@...> 1999/07/19

原です。

[#7374] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7382] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/19

青山です。

[#7386] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/21

まつもと ゆきひろです

[#7388] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/21

青山です。

[#7387] [PATCH]extconf.rb, tcltklib.c, and rubytest.rb for NetBSD — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp>

早坂@会津大学です。

10 messages 1999/07/21

[#7466] [PATCH] for djgpp — WATANABE Hirofumi <watanabe@...>

わたなべです.

21 messages 1999/07/29
[#7467] Re: [PATCH] for djgpp — Katsuyuki Komatsu <komatsu@...> 1999/07/29

小松です。

[ruby-dev:7371] Re: resolver を呼ばない UDPsocket#recvfrom

From: Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>
Date: 1999-07-19 01:41:44 UTC
List: ruby-dev #7371
From: matz@netlab.co.jp (Yukihiro Matsumoto)
Subject: [ruby-dev:7367] Re: resolver を呼ばない UDPsocket#recvfrom
Date: Mon, 19 Jul 1999 09:21:46 +0900

> 返事しなかったのは無視してたからではなくて、考えてたからです。

あぁ、良かった:-)


> ニーズはわかってきました。

どもどもです。


> RubyでDNS... すごすぎ。

っていうか、このために UDPsocket クラス作って貰ったとも言います;-)
ま Perl で DNS 書く方々もいらっしゃるくらいですし:-)


> |各ソケットインスタンスに、自動的に逆引きによるホスト名検索を行うかどうか
> |という属性を持たせます。デフォルトは検索を行う、にしておきます。あとはそ
> |の属性を変更できるメソッドを用意します。
> 
> あー、これ面白いかも。

なんとなく、このほうが綺麗かなという気がしています。


> |逆引きを行うかどうかと言う属性(状態)は、各ソケットインスタンスではなく、
> |インタプリタ全体で一つ持ってれば充分かもしれません。
> 
> どっちが良いでしょうかねえ。

インスタンス毎のほうが綺麗な気はします。ただ TCPserver#accept で得られる
インスタンスの属性は、元の TCPserver のインスタンスのの属性を引き継ぐの
かな? とか、ちと考えちゃうところはあります。


From: matz@netlab.co.jp (Yukihiro Matsumoto)
Subject: [ruby-dev:7369] Re: resolver を呼ばない UDPsocket#recvfrom
Date: Mon, 19 Jul 1999 10:04:30 +0900

> recvfromが返すのは 
> 
>   [family, port, host, octet_decial]
> 
> な配列ですから、「実際の送り手を判断する手段が全くありません」
> ということはないです。

TCPsocket#recvfrom に関してはそのとおりです。しかし、
UDPsocket#recvfrom が返すのは [host, port] な配列だったりします。とゆこ
とで、高島さんがご指摘のように「実際の送り手を判断する手段が全くありませ
ん」な状態な気がします。

一番美しいのは、UDPsocket#recvfrom の帰り値の 2番目の要素を
TCPsocket#recvfrom に合わせて IPsocket#addr にすることだと思います。後方
互換性が全くないのがドキドキではあります。

一番シンプルなのは UDPsocket#recvfrom の帰り値の 2番目の要素を IP アドレ
スを示す文字列にすることだと思います。逆引きに失敗したときの動作ですし、
多くのプログラムはこの変更を加えても動くと思います。ホスト名が欲しい人は、
この値を元に Socket#gethostbyaddr してね、というとこで。なんとなく、お手
軽感が薄れるのが残念です。

もしも、IPsocket#addr が帰ってくるとしても、その第3要素のホスト名を逆引
きしないという選択肢が欲しいという、僕の要望は変わりません。
--
としちゃん

In This Thread