>  기사  >  백엔드 개발  >  Go HTTP 클라이언트에서 IPv4 또는 IPv6 사용을 적용하는 방법은 무엇입니까?

Go HTTP 클라이언트에서 IPv4 또는 IPv6 사용을 적용하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-02 14:16:02437검색

How to Enforce IPv4 or IPv6 Usage in Go HTTP Client?

Go HTTP 클라이언트에서 IPv4/IPv6 사용 시행

Go에서 http.Client는 네트워크 연결을 처리하는 HTTP 요청에 대한 전송을 제공합니다. . 클라이언트가 IPv4 또는 IPv6를 독점적으로 사용하도록 하려면 사용자 정의 전송 구현 내에서 DialContext 기능을 활용하십시오.

ModifiedTransport 구현

수정된 전송 조각은 오류를 반환하여 IPv6 전용 도메인을 감지하는 것을 목표로 합니다. IPv4 연결을 설정하려고 시도하는 경우.

<code class="go">type MyTransport struct {
    http.Transport
    Dialer net.Dialer
}

func (t *MyTransport) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
    if network == "ipv4" {
        return nil, errors.New("IPv4 not permitted")
    }
    return t.Dialer.DialContext(ctx, network, address)
}</code>

HTTP 클라이언트 구성

사용자 정의 전송을 사용하려면 http.Client 개체를 인스턴스화합니다.

<code class="go">myClient := http.Client{
    Transport: &MyTransport{
        Dialer: net.Dialer{
            DualStack: false, // Disable IPv4/IPv6 dual-stack
        },
    },
}</code>

IPv6 전용 연결 시행

DualStack을 false로 설정하면 다이얼러는 IPv4 연결을 허용하지 않습니다. 이 수정으로 인해 클라이언트는 IPv6 전용 연결을 사용하게 됩니다.

연결 닫기

수정된 전송을 사용하여 설정된 연결은 일반 연결처럼 작동합니다. 닫는 작업은 기본 HTTP 클라이언트에서 관리되므로 수동으로 처리할 필요가 없습니다.

위 내용은 Go HTTP 클라이언트에서 IPv4 또는 IPv6 사용을 적용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.