عميل Nim Domain Name System (DNS) النقي الذي تم تنفيذه باستخدام dnsprotocol.
يحتوي هذا التنفيذ على إجراءات متزامنة وغير متزامنة (غير متزامنة) (procs) لنقل البيانات عبر الإنترنت، باستخدام بروتوكول UDP وTCP.
nimble install ndns
أو
nimble install https://github.com/rockcavera/nim-ndns.git
حل عناوين IPv4 لـ nim-lang.org ( غير متزامنة ):
import ndns
let client = initDnsClient ()
echo resolveIpv4 (client, " nim-lang.org " )
حل عناوين IPv4 لـ nim-lang.org ( async ):
import asyncdispatch, ndns
let client = initDnsClient ()
echo waitFor asyncResolveIpv4 (client, " nim-lang.org " )
للحصول على مثال غير متزامن "في الحياة الواقعية"، راجع Resolver.nim. في هذا المثال، قمت بتقديم أكبر عدد ممكن من التعليقات، حتى لو كانت تبدو سخيفة. أعتقد أنه قد يساعد شخصًا ما، كمثال مماثل قدمته بشكل خاص للوافد الجديد إلى Nim. ويمكن أيضًا تجميعه باستخدام -d:showLoopLog
لإظهار سير العمل غير المتزامن.
إنشاء كائن Message
باستخدام استعلام QType.A
لاسم النطاق nim-lang.org، وإرسال Message
واستقبال الاستجابة ( غير متزامنة ):
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)
إنشاء كائن Message
باستخدام استعلام QType.A
لاسم المجال nim-lang.org، وإرسال Message
واستقبال الاستجابة ( غير متزامن ):
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