ホームページ  >  記事  >  バックエンド開発  >  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 Implementation

変更されたトランスポート スニペットは、エラーを返すことによって 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。