Klien Nim Domain Name System (DNS) murni yang diimplementasikan dengan dnsprotocol.
Implementasi ini memiliki prosedur (procs) sinkron dan asinkron (async) untuk transmisi data melalui internet, menggunakan protokol UDP dan TCP.
nimble install ndns
atau
nimble install https://github.com/rockcavera/nim-ndns.git
Menyelesaikan alamat IPv4 untuk nim-lang.org ( bukan async ):
import ndns
let client = initDnsClient ()
echo resolveIpv4 (client, " nim-lang.org " )
Menyelesaikan alamat IPv4 untuk nim-lang.org ( async ):
import asyncdispatch, ndns
let client = initDnsClient ()
echo waitFor asyncResolveIpv4 (client, " nim-lang.org " )
Untuk contoh asinkron "kehidupan nyata", lihat Resolver.nim. Dalam contoh ini saya telah memberikan komentar sebanyak mungkin, meskipun terlihat konyol. Saya pikir ini mungkin membantu seseorang, seperti contoh serupa yang saya berikan secara pribadi untuk pendatang baru di Nim. Itu juga dapat dikompilasi dengan -d:showLoopLog
untuk menampilkan alur kerja async.
Membuat objek Message
dengan kueri QType.A
untuk nama domain nim-lang.org, mengirimkan Message
dan menerima respons ( bukan async ):
import ndns
let header = initHeader ( randId (), rd = true )
let question = initQuestion ( " nim-lang.org " , QType .A, QClass . IN )
# If the last character of "nim-lang.org" is not a '.', the initializer will
# add, as it is called the DNS root.
let msg = initMessage (header, @ [question])
# The initializer automatically changes `header.qdcount` to `1'u16`
let client = initDnsClient ()
var rmsg = dnsQuery (client, msg)
echo repr (rmsg)
Membuat objek Message
dengan kueri QType.A
untuk nama domain nim-lang.org, mengirimkan Message
dan menerima respons ( async ):
import asyncdispatch, ndns
let header = initHeader ( randId (), rd = true )
let question = initQuestion ( " nim-lang.org " , QType .A, QClass . IN )
# If the last character of "nim-lang.org" is not a '.', the initializer will
# add, as it is called the DNS root.
let msg = initMessage (header, @ [question])
# The initializer automatically changes `header.qdcount` to `1'u16`
let client = initDnsClient ()
var rmsg = waitFor dnsAsyncQuery (client, msg)
echo repr (rmsg)
Anda dapat menginisialisasi klien DNS dengan server penyelesai DNS yang digunakan oleh sistem. Untuk melakukan ini, mulai klien dengan initSystemDnsClient
.
import ndns
let client = initSystemDnsClient ()
echo resolveIpv4 (client, " nim-lang.org " )
https://rockcavera.github.io/nim-ndns/ndns.html