Go HTTP クライアントでの IPv4/IPv6 の使用の強制
Go では、http.Client はネットワーク接続を処理する HTTP リクエストのトランスポートを提供します。 。クライアントに IPv4 または IPv6 を排他的に使用させるには、カスタム トランスポート実装内で DialContext 関数を利用します。
変更されたトランスポート スニペットは、エラーを返すことによって 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.Client オブジェクトをインスタンス化します。
<code class="go">myClient := http.Client{ Transport: &MyTransport{ Dialer: net.Dialer{ DualStack: false, // Disable IPv4/IPv6 dual-stack }, }, }</code>
DualStack を false に設定すると、ダイヤラは IPv4 接続を禁止します。この変更により、クライアントは実質的に IPv6 のみの接続を使用するようになります。
変更されたトランスポートを使用して確立された接続は、通常の接続として動作します。それらを閉じることは基礎となる HTTP クライアントによって管理されるため、手動で処理する必要はありません。
以上がGo HTTP クライアントで IPv4 または IPv6 の使用を強制する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。