Bagaimanakah cara saya mengikat `http.Client` kepada alamat IP tertentu dalam Go?

Linda Hamilton
Lepaskan: 2024-10-28 01:48:29
asal
901 orang telah melayarinya

How do I bind an `http.Client` to a specific IP address in Go?

Mengikat http.Pelanggan kepada Alamat IP Tertentu dalam Go

Apabila berurusan dengan berbilang antara muka rangkaian pada mesin klien, menjadi penting untuk mengikat http.Client ke alamat IP NIC atau SRC tertentu untuk memastikan penghalaan trafik rangkaian yang tepat. Panduan berikut akan memandu anda melalui langkah-langkah yang diperlukan untuk mencapai perkara ini dalam Go.

Untuk bermula, adalah penting untuk menetapkan medan http.Client.Transport kepada contoh net.Transport. Ini membolehkan anda menentukan net.Dialer yang anda ingin gunakan. Selepas itu, net.Dialer memberi anda kuasa untuk menentukan alamat setempat dari mana sambungan dimulakan.

Pertimbangkan coretan kod berikut:

<code class="go">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,
            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,
    },
}</code>
Salin selepas log masuk

Dengan mengikuti langkah ini, anda boleh mengikat http anda dengan berkesan .Pelanggan ke alamat IP tertentu, memastikan kawalan ke atas trafik rangkaian yang berasal daripada mesin pelanggan anda.

Atas ialah kandungan terperinci Bagaimanakah cara saya mengikat `http.Client` kepada alamat IP tertentu dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!