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 = &http.Transport{ DialContext: (&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>
Memaksa Sambungan IPv6
Untuk memaksa Sambungan IPv6, kami boleh menentukan "tcp6" sebagai parameter rangkaian dalam fungsi Kawalan:
<code class="go">func ModifiedTransport() { var MyTransport = &http.Transport{ DialContext: (&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>
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!