DNS query: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) m (→{{header|Perl}}: display output properly) |
(Added Wren) |
||
Line 1,525: | Line 1,525: | ||
URL: www.kame.net |
URL: www.kame.net |
||
IP Version 6: 2001:200:dff:fff1:216:3eff:feb1:44d7 |
IP Version 6: 2001:200:dff:fff1:216:3eff:feb1:44d7 |
||
</pre> |
|||
=={{header|Wren}}== |
|||
Wren CLI doesn't currently expose a way to make a DNS query. |
|||
However, if Wren is embedded in (say) a suitable Go program, then we can ask the latter to do it for us. |
|||
<lang ecmascript>/* dns_query.wren */ |
|||
class Net { |
|||
foreign static lookupHost(host) |
|||
} |
|||
var host = "orange.kame.net" |
|||
var addrs = Net.lookupHost(host).split(", ") |
|||
System.print(addrs.join("\n"))</lang> |
|||
which we embed in the following Go program and run it: |
|||
{{libheader|WrenGo}} |
|||
<lang go>/* go run dns_query.go */ |
|||
package main |
|||
import( |
|||
wren "github.com/crazyinfin8/WrenGo" |
|||
"net" |
|||
"strings" |
|||
) |
|||
type any = interface{} |
|||
func lookupHost(vm *wren.VM, parameters []any) (any, error) { |
|||
host := parameters[1].(string) |
|||
addrs, err := net.LookupHost(host) |
|||
if err != nil { |
|||
return nil, nil |
|||
} |
|||
return strings.Join(addrs, ", "), nil |
|||
} |
|||
func main() { |
|||
vm := wren.NewVM() |
|||
fileName := "dns_query.wren" |
|||
methodMap := wren.MethodMap{"static lookupHost(_)": lookupHost} |
|||
classMap := wren.ClassMap{"Net": wren.NewClass(nil, nil, methodMap)} |
|||
module := wren.NewModule(classMap) |
|||
vm.SetModule(fileName, module) |
|||
vm.InterpretFile(fileName) |
|||
vm.Free() |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
2001:200:dff:fff1:216:3eff:feb1:44d7 |
|||
203.178.141.194 |
|||
</pre> |
</pre> |
||