2010/03/29

erlang resolve

名前の解決の間にも色々したい!!

Erlang ならどんどん名前の解決をしてくれるに違いありません。
プログラミングErlangには
inet:gethostbyname/1 とかあるみたいですけど
1> inet:gethostbyname("www.google.com").
{ok,{hostent,"www.l.google.com",
["www.google.com"],
inet,4,
[{66,249,89,147},
{66,249,89,106},
{66,249,89,104},
{66,249,89,105},
{66,249,89,103},
{66,249,89,99}]}}
そんなことでは飽きたりません

で、ググったら inet_res ってのがありました
2> inet_res:gethostbyname("www.google.com").
{ok,{hostent,"www.l.google.com",
["www.google.com"],
inet,4,
[{66,249,89,147},
{66,249,89,106},
{66,249,89,104},
{66,249,89,105},
{66,249,89,103},
{66,249,89,99}]}}
いっしょやん
いやいや
3> inet_res:lookup("www.google.com", in, a). 
[{66,249,89,147},
{66,249,89,106},
{66,249,89,104},
{66,249,89,105},
{66,249,89,103},
{66,249,89,99}]
4> inet_res:resolve("www.google.com", in, a).
{ok,{dns_rec,{dns_header,2,true,'query',false,false,true,
true,false,0},
[{dns_query,"www.google.com",a,in}],
[{dns_rr,"www.google.com",cname,in,0,315339,
"www.l.google.com",undefined,[],false},
{dns_rr,"www.l.google.com",a,in,0,22,
{66,249,89,147},
undefined,[],false},
{dns_rr,"www.l.google.com",a,in,0,22,
{66,249,89,106},
undefined,[],false},
{dns_rr,"www.l.google.com",a,in,0,22,
{66,249,89,104},
undefined,[],false},
{dns_rr,"www.l.google.com",a,in,0,22,
{66,249,89,105},
undefined,[],false},
{dns_rr,"www.l.google.com",a,in,0,22,
{66,249,89,103},
undefined,[],false},
{dns_rr,"www.l.google.com",a,in,0,22,
{66,249,89,99},
undefined,[],false}],
[],[]}}
色々細かく指定できるみたい
例えば
5> inet_res:lookup("www.google.com", in, a, [{nameservers, [{{8,8,8,8}, 53}, {{8,8,4,4}, 53}]}]). 
[{66,249,89,147},
{66,249,89,104},
{66,249,89,103},
{66,249,89,106},
{66,249,89,99},
{66,249,89,105}]
てな感じで nameservers も指定できます

あと、メモ (inet とか inet_parse とか)
6> inet_parse:ntoa({8,8,8,8}).
"8.8.8.8"
7> inet_parse:address("8.8.8.8").
{ok,{8,8,8,8}}

0 件のコメント:

コメントを投稿