Heim >Backend-Entwicklung >Golang >Wie erzwinge ich die IPv4/IPv6-Nutzung im Net/http-Client von Go?
Problem:
Verwendung des Netzes/ von Go 1.11/ http-Client, wie kann man feststellen, ob eine Domain nur IPv6 ist, und verhindern, dass sie IPv4 verwendet, wenn? gewünscht?
Lösung:
Um die IPv4- oder IPv6-Nutzung im Net/HTTP-Client von Go zu erzwingen, ändern Sie dessen DialContext-Funktion mithilfe der Control-Option des net.Dialer. Diese Funktion überprüft den Netzwerktyp, der für ausgehende Verbindungen verwendet wird.
Kopieren Sie den folgenden Code in Ihre Hauptfunktion:
<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>
Erklärung:
Das obige ist der detaillierte Inhalt vonWie erzwinge ich die IPv4/IPv6-Nutzung im Net/http-Client von Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!