Forcer IPv4 ou IPv6 dans le client net/http de Go
Dans Go, le package net/http fournit un client HTTP polyvalent pour effectuer des requêtes . Elle offre une flexibilité dans la personnalisation du comportement du client à travers son domaine Transport. Cet article explique comment forcer le client à utiliser IPv4 ou IPv6 lors de l'établissement de connexions.
Détection des domaines IPv6 uniquement
Pour déterminer si un domaine est IPv6- uniquement, nous pouvons créer une fonction DialContext personnalisée qui vérifie le paramètre réseau passé à la méthode Control. Si le réseau est "tcp4", cela indique une connexion IPv4 uniquement et nous pouvons annuler la connexion.
<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>
Forcer les connexions IPv6
Pour forcer une Connexion IPv6, nous pouvons spécifier "tcp6" comme paramètre réseau dans la fonction Contrôle :
<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>
En contrôlant le paramètre réseau dans la fonction Contrôle, nous pouvons appliquer la connectivité IPv4 ou IPv6 comme nous le souhaitons. Cette approche offre une flexibilité dans la personnalisation du comportement du client net/http de Go pour des exigences de réseau spécifiques.
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!