Bagaimana untuk Menguatkuasakan Penggunaan IPv4 atau IPv6 dalam Klien HTTP Go?

Linda Hamilton
Lepaskan: 2024-11-02 14:16:02
asal
437 orang telah melayarinya

How to Enforce IPv4 or IPv6 Usage in Go HTTP Client?

Menguatkuasakan Penggunaan IPv4/IPv6 dalam Go HTTP Client

In Go, http.Client menyediakan pengangkutan untuk permintaan HTTP yang mengendalikan sambungan rangkaian . Untuk memaksa pelanggan menggunakan IPv4 atau IPv6 secara eksklusif, manfaatkan fungsi DialContext dalam pelaksanaan pengangkutan tersuai.

Pelaksanaan Pengangkutan Terubahsuai

Coretan pengangkutan yang diubah suai bertujuan untuk mengesan domain IPv6 sahaja dengan mengembalikan ralat apabila percubaan dibuat untuk mewujudkan sambungan IPv4.

<code class="go">type MyTransport struct {
    http.Transport
    Dialer net.Dialer
}

func (t *MyTransport) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
    if network == "ipv4" {
        return nil, errors.New("IPv4 not permitted")
    }
    return t.Dialer.DialContext(ctx, network, address)
}</code>
Salin selepas log masuk

Konfigurasi Pelanggan HTTP

Untuk menggunakan pengangkutan tersuai, nyatakan objek http.Client:

<code class="go">myClient := http.Client{
    Transport: &MyTransport{
        Dialer: net.Dialer{
            DualStack: false, // Disable IPv4/IPv6 dual-stack
        },
    },
}</code>
Salin selepas log masuk

Menguatkuasakan Sambungan IPv6 Sahaja

Dengan menetapkan DualStack kepada palsu, Dialer tidak membenarkan sambungan IPv4. Pengubahsuaian ini berkesan memaksa pelanggan untuk menggunakan sambungan IPv6 sahaja.

Menutup Sambungan

Sambungan yang diwujudkan menggunakan pengangkutan yang diubah suai berkelakuan sebagai sambungan biasa. Menutupnya diuruskan oleh klien HTTP yang mendasari, jadi tidak perlu mengendalikannya secara manual.

Atas ialah kandungan terperinci Bagaimana untuk Menguatkuasakan Penggunaan IPv4 atau IPv6 dalam Klien HTTP Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!