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}]}]).てな感じで nameservers も指定できます
[{66,249,89,147},
{66,249,89,104},
{66,249,89,103},
{66,249,89,106},
{66,249,89,99},
{66,249,89,105}]
あと、メモ (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 件のコメント:
コメントを投稿