dnsprotocol で実装された純粋な Nim ドメイン ネーム システム (DNS) クライアント。
この実装には、UDP プロトコルと TCP プロトコルの両方を使用して、インターネット上でデータを送信するための同期および非同期 (async) プロシージャ (proc) が含まれています。
nimble install ndns
または
nimble install https://github.com/rockcavera/nim-ndns.git
nim-lang.org の IPv4 アドレスを解決します ( async ではありません):
import ndns
let client = initDnsClient ()
echo resolveIpv4 (client, " nim-lang.org " )
nim-lang.org ( async ) の IPv4 アドレスの解決:
import asyncdispatch, ndns
let client = initDnsClient ()
echo waitFor asyncResolveIpv4 (client, " nim-lang.org " )
「実際の」非同期の例については、resolver.nim を参照してください。この例では、ばかげているように見えても、できる限り多くのコメントを作成しました。 Nim の初心者向けに個人的に提供した同様の例として、これが誰かの役に立つかもしれないと思います。 -d:showLoopLog
を使用してコンパイルして、非同期ワークフローを表示することもできます。
ドメイン名 nim-lang.org に対するQType.A
クエリを使用してMessage
オブジェクトを作成し、 Message
送信して応答を受信します ( 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)
ドメイン名 nim-lang.org に対するQType.A
クエリを使用してMessage
オブジェクトを作成し、 Message
送信して応答を受信します ( 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)
システムで使用される DNS リゾルバー サーバーを使用して DNS クライアントを初期化できます。これを行うには、 initSystemDnsClient
でクライアントを起動します。
import ndns
let client = initSystemDnsClient ()
echo resolveIpv4 (client, " nim-lang.org " )
https://rockcavera.github.io/nim-ndns/ndns.html