ホームページ > バックエンド開発 > Golang > 複数の NIC が存在する場合、Go の HTTP クライアントの IP アドレスを制限するにはどうすればよいですか?

複数の NIC が存在する場合、Go の HTTP クライアントの IP アドレスを制限するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-02 19:55:02
オリジナル
413 人が閲覧しました

How do I constrain the IP address of Go's HTTP client when multiple NICs are present?

HTTP クライアントの IP アドレスを制限する方法

Go の http.Client を使用すると効率的な HTTP リクエストが可能になりますが、次の場合にその IP アドレスを制限するにはどうすればよいですか?システムには複数の NIC が搭載されていますか?

IP のカスタマイズバインディング

http.Client を特定の IP にバインドするには、その Transport フィールドを net.Transport のインスタンスで変更します。これにより、接続用のローカル アドレスを制御する net.Dialer を指定できます。

コード例

以下のコード スニペットは、クライアントを指定されたアドレスにバインドする方法を示しています。ローカル IP アドレス:

<code class="go">import (
    "net"
    "net/http"
    "net/http/httputil"
    "time"
)

func main() {
    // Resolve the local IP address
    localAddr, err := net.ResolveIPAddr("ip", "<my local address>")
    if err != nil {
        panic(err)
    }

    // Create a TCPAddr instance to specify the local address without specifying a port
    localTCPAddr := net.TCPAddr{
        IP: localAddr.IP,
    }

    // Create an HTTP client with a custom transport that specifies the local address
    webclient := &http.Client{
        Transport: &http.Transport{
            Proxy:                 http.ProxyFromEnvironment,
            DialContext:          (&net.Dialer{
                LocalAddr:      &localTCPAddr,
                Timeout:       30 * time.Second,
                KeepAlive:     30 * time.Second,
                DualStack:     true,
            }).DialContext,
            MaxIdleConns:          100,
            IdleConnTimeout:       90 * time.Second,
            TLSHandshakeTimeout:   10 * time.Second,
            ExpectContinueTimeout: 1 * time.Second,
        },
    }

    // Execute an HTTP request using the customized client
    req, _ := http.NewRequest("GET", "http://www.google.com", nil)
    resp, _ := webclient.Do(req)
    defer resp.Body.Close()
    
    // Optionally, use httputil to get the status code and response body
    code, _ := httputil.DumpResponse(resp, true)
    fmt.Println(code)
}</code>
ログイン後にコピー

この方法を使用すると、HTTP クライアントの接続で使用される IP アドレスを指定できます。これにより、送信 IP を制御してネットワークを柔軟にできるようになります。

以上が複数の NIC が存在する場合、Go の HTTP クライアントの IP アドレスを制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート