문제:
Go 1.11의 net/ 사용 http 클라이언트, 도메인이 IPv6 전용인지 확인하고 이를 사용하지 못하게 하려면 어떻게 해야 합니까? 원하는 경우 IPv4를 사용하시겠습니까?
해결책:
Go의 net/http 클라이언트에서 IPv4 또는 IPv6 사용을 적용하려면 net.Dialer의 Control 옵션을 사용하여 DialContext 기능을 수정하세요. . 이 기능은 나가는 연결에 사용되는 네트워크 유형을 확인합니다.
다음 코드를 기본 기능에 복사합니다.
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!