Bagaimana untuk memaksa sambungan IPv4 atau IPv6 dalam Net/http Client Go?

Linda Hamilton
Lepaskan: 2024-10-31 20:48:29
asal
704 orang telah melayarinya

How to force IPv4 or IPv6 connections in Go's net/http Client?

Memaksa IPv4 atau IPv6 dalam Go's net/http Client

In Go, pakej net/http menyediakan klien HTTP serba boleh untuk membuat permintaan . Ia menawarkan fleksibiliti dalam menyesuaikan tingkah laku pelanggan melalui bidang Pengangkutannya. Artikel ini akan meneroka cara untuk memaksa pelanggan menggunakan sama ada IPv4 atau IPv6 semasa membuat sambungan.

Mengesan Domain IPv6 Sahaja

Untuk menentukan sama ada domain ialah IPv6- sahaja, kita boleh mencipta fungsi DialContext tersuai yang menyemak parameter rangkaian yang dihantar kepada kaedah Kawalan. Jika rangkaian ialah "tcp4", ini menunjukkan sambungan IPv4 sahaja dan kami boleh membatalkan sambungan.

<code class="go">func ModifiedTransport() {
    var MyTransport = &amp;http.Transport{
        DialContext: (&amp;net.Dialer{
            DualStack: false,
            Control: func(network, address string, c syscall.RawConn) error {
                if network == "tcp4" {
                    return errors.New("you should not use ipv4")
                }
                return nil
            },
        }).DialContext,
        MaxIdleConns:          100,
        IdleConnTimeout:       90 * time.Second,
        TLSHandshakeTimeout:   10 * time.Second,
        ExpectContinueTimeout: 1 * time.Second,
    }

    var myClient = http.Client{Transport: MyTransport}
    resp, myerr := myClient.Get("http://www.github.com")
    if myerr != nil {
        fmt.Println("request error")
        return
    }
}</code>
Salin selepas log masuk

Memaksa Sambungan IPv6

Untuk memaksa Sambungan IPv6, kami boleh menentukan "tcp6" sebagai parameter rangkaian dalam fungsi Kawalan:

<code class="go">func ModifiedTransport() {
    var MyTransport = &amp;http.Transport{
        DialContext: (&amp;net.Dialer{
            DualStack: false,
            Control: func(network, address string, c syscall.RawConn) error {
                if network != "tcp6" {
                    return errors.New("you should use ipv6")
                }
                return nil
            },
        }).DialContext,
        MaxIdleConns:          100,
        IdleConnTimeout:       90 * time.Second,
        TLSHandshakeTimeout:   10 * time.Second,
        ExpectContinueTimeout: 1 * time.Second,
    }

    var myClient = http.Client{Transport: MyTransport}
}</code>
Salin selepas log masuk

Dengan mengawal parameter rangkaian dalam fungsi Kawalan, kami boleh menguatkuasakan sambungan IPv4 atau IPv6 seperti yang dikehendaki. Pendekatan ini memberikan fleksibiliti dalam menyesuaikan tingkah laku klien net/http Go untuk keperluan rangkaian tertentu.

Atas ialah kandungan terperinci Bagaimana untuk memaksa sambungan IPv4 atau IPv6 dalam Net/http Client 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!