Problème :
Utilisation du réseau Go 1.11/ client http, comment déterminer si un domaine est uniquement IPv6 et l'empêcher d'utiliser IPv4 si vous le souhaitez ?
Solution :
Pour imposer l'utilisation d'IPv4 ou d'IPv6 dans Client net/http de Go, modifiez sa fonction DialContext à l'aide de l'option Control de net.Dialer. Cette fonction vérifie le type de réseau utilisé pour les connexions sortantes.
Copiez le code suivant dans votre fonction principale :
<code class="go">func ModifiedTransport() { var MyTransport = &http.Transport{ DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, DualStack: false, Control: func(network, address string, c syscall.RawConn) error { if network == "ipv4" { // Force cancellation of IPv4 connections 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 } var buffer = make([]byte, 1000) resp.Body.Read(buffer) fmt.Println(string(buffer)) }</code>
Explication :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!