Maison > développement back-end > Golang > Comment puis-je lier un client HTTP Go à une adresse IP spécifique ?

Comment puis-je lier un client HTTP Go à une adresse IP spécifique ?

Patricia Arquette
Libérer: 2024-10-29 12:24:29
original
926 Les gens l'ont consulté

How Can I Bind a Go HTTP Client to a Specific IP Address?

Lier un http.Client à une adresse IP dans Go

Dans le domaine de l'informatique distribuée, il est souvent nécessaire de contrôler l'adresse IP source adresse d'où proviennent les requêtes HTTP. Avec plusieurs cartes réseau sur une machine client, cette granularité peut être essentielle.

Considérez le code client HTTP de base suivant :

<code class="go">package main

import "net/http"

func main() {
    webclient := &http.Client{}
    req, _ := http.NewRequest("GET", "http://www.google.com", nil)
    httpResponse, _ := webclient.Do(req)
    defer httpResponse.Body.Close()
}</code>
Copier après la connexion

Pour lier ce client à une carte réseau ou une adresse IP spécifique, nous besoin de modifier son champ Transport. Nous utiliserons un net.Transport personnalisé qui utilise un net.Dialer personnalisé. Le net.Dialer, à son tour, nous permet de spécifier l'adresse locale pour les connexions sortantes.

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

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

    webclient := &http.Client{
        Transport: &http.Transport{
            Proxy:                http.ProxyFromEnvironment,
            DialContext:          (&net.Dialer{LocalAddr: &localTCPAddr}).DialContext,
            MaxIdleConns:          100,
            IdleConnTimeout:       90 * time.Second,
            TLSHandshakeTimeout:   10 * time.Second,
            ExpectContinueTimeout: 1 * time.Second,
        },
    }
}</code>
Copier après la connexion

Avec cette modification, notre client HTTP est désormais lié à l'adresse IP spécifiée, garantissant que toutes les requêtes sortantes proviennent à partir de la carte réseau souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal