ไคลเอ็นต์ Nim Domain Name System (DNS) บริสุทธิ์ที่ใช้งานกับ dnsprotocol
การใช้งานนี้มีขั้นตอน (procs) แบบซิงโครนัสและอะซิงโครนัส (async) สำหรับการส่งข้อมูลผ่านอินเทอร์เน็ต โดยใช้ทั้งโปรโตคอล UDP และ TCP
nimble install ndns
หรือ
nimble install https://github.com/rockcavera/nim-ndns.git
การแก้ไขที่อยู่ IPv4 สำหรับ nim-lang.org ( ไม่ใช่ async ):
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 " )
สำหรับตัวอย่างอะซิงก์ "ในชีวิตจริง" โปรดดูที่ solver.nim ในตัวอย่างนี้ ฉันได้แสดงความคิดเห็นให้ได้มากที่สุด แม้ว่าความคิดเห็นจะดูไร้สาระก็ตาม ฉันคิดว่ามันอาจช่วยใครซักคนได้ เป็นตัวอย่างที่คล้ายกันที่ฉันให้ไว้เป็นการส่วนตัวสำหรับผู้มาใหม่กับ Nim นอกจากนี้ยังสามารถคอมไพล์ด้วย -d:showLoopLog
เพื่อแสดงเวิร์กโฟลว์อะซิงก์
การสร้างอ็อบเจ็กต์ Message
ด้วยการสืบค้น QType.A
สำหรับชื่อโดเมน nim-lang.org ส่ง 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)
การสร้างอ็อบเจ็กต์ Message
ด้วยการสืบค้น QType.A
สำหรับชื่อโดเมน nim-lang.org ส่ง 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