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

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

Patricia Arquette
Libérer: 2024-10-27 13:33:30
original
733 Les gens l'ont consulté

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

Liaison d'un http.Client à une adresse IP dans Go

Dans Go, par défaut, les requêtes HTTP ne se lient pas à une adresse IP spécifique ou à une carte d'interface réseau ( carte réseau). Cela peut être problématique si vous disposez de plusieurs cartes réseau et devez spécifier laquelle utiliser pour les requêtes HTTP sortantes.

Pour résoudre ce problème, vous pouvez modifier le champ Transport de la structure http.Client. En le définissant sur une instance de net.Transport, vous accédez à la méthode DialContext de net.Dialer, qui vous permet de remplacer l'adresse locale par défaut.

Voici un exemple qui montre comment lier un http. Client vers une adresse IP spécifique :

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

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

    // Create a TCPAddr from the IP address
    localTCPAddr := net.TCPAddr{
        IP: localAddr.IP,
    }

    // Initialize an http.Client with a custom DialContext
    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,
        },
    }

    // Make an HTTP request
    req, _ := http.NewRequest("GET", "http://www.google.com", nil)
    httpResponse, _ := webclient.Do(req)
    defer httpResponse.Body.Close()
}</code>
Copier après la connexion

En utilisant cette approche, vous pouvez vous assurer que les requêtes HTTP effectuées à l'aide du http.Client modifié proviendront d'une adresse IP spécifique.

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