dnsprotocol로 구현된 순수 Nim 도메인 이름 시스템(DNS) 클라이언트.
이 구현에는 UDP 및 TCP 프로토콜을 모두 사용하여 인터넷을 통해 데이터를 전송하기 위한 동기식 및 비동기식(비동기) 프로시저(procs)가 있습니다.
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