ホームページ > バックエンド開発 > Golang > /etc/resolv.confを変更せずにGolangでLookupTXTを実行する方法は?

/etc/resolv.confを変更せずにGolangでLookupTXTを実行する方法は?

Patricia Arquette
リリース: 2024-12-03 12:58:11
オリジナル
248 人が閲覧しました

How to Perform a LookupTXT in Golang Without Changing /etc/resolv.conf?

/etc/resolv.conf を変更しない Golang の LookupTXT 関数

標準の Golang ライブラリは、LookupTXT に相当する直接関数を提供していません。カスタム DNS サーバーを指定できます。この理由は、DNS クライアントが DNS サーバー情報に関して /etc/resolv.conf の構成に依存しているためです。

ただし、変更を加えないという要件を守りながら必要なことを実現するには、いくつかのオプションがあります。 /etc/resolv.conf.

カスタム DNS の使用リゾルバー:

1 つの方法は、特定の DNS サーバーの指定をサポートするカスタム DNS リゾルバー ライブラリを使用することです。たとえば、github.com/miekg/dns ライブラリは、dns.Client オブジェクトにカスタム サーバー IP を設定する柔軟性を提供します。次のコードは、このライブラリの使用方法を示しています:

import (
    "log"
    "net"

    "github.com/miekg/dns"
)

func main() {
    target := "microsoft.com"
    server := "8.8.8.8"

    // Create a new DNS client with a custom server.
    c := dns.Client{Net: "udp", Server: server}

    // Build a request message.
    m := dns.Msg{}
    m.SetQuestion(target+".", dns.TypeTXT)

    // Exchange the request and receive the response.
    r, _, err := c.Exchange(&m, server+":53")
    if err != nil {
        log.Fatal(err)
    }

    // Process the response.
    if len(r.Answer) == 0 {
        log.Fatal("No results")
    }
    for _, ans := range r.Answer {
        TXTrecord := ans.(*dns.TXT)
        for _, txt := range TXTrecord.Txt {
            log.Println(txt)
        }
    }
}
ログイン後にコピー

以上が/etc/resolv.confを変更せずにGolangでLookupTXTを実行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート