問題:
Go 1.11 の net/ の使用http クライアントの場合、ドメインが IPv6 専用かどうかを判断し、必要に応じて IPv4 の使用を禁止するにはどうすればよいですか?
解決策:
で IPv4 または IPv6 の使用を強制するにはGo の net/http クライアントは、net.Dialer の Control オプションを使用して DialContext 関数を変更します。この関数は、送信接続に使用されるネットワーク タイプをチェックします。
次のコードを main 関数にコピーします:
<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>
説明:
以上がGo の net/http クライアントで IPv4/IPv6 の使用を強制する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。