"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > एकाधिक एनआईसी मौजूद होने पर मैं गो के HTTP क्लाइंट के आईपी पते को कैसे सीमित करूं?

एकाधिक एनआईसी मौजूद होने पर मैं गो के HTTP क्लाइंट के आईपी पते को कैसे सीमित करूं?

2024-11-08 को प्रकाशित
ब्राउज़ करें:471

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

HTTP क्लाइंट के आईपी पते को कैसे प्रतिबंधित करें

गो का http.क्लाइंट कुशल HTTP अनुरोधों को सक्षम करता है, लेकिन आप इसके आईपी पते को कैसे प्रतिबंधित करते हैं यदि आपका सिस्टम में एकाधिक एनआईसी हैं?

आईपी बाइंडिंग को अनुकूलित करना

http.क्लाइंट को एक विशिष्ट आईपी से बांधने के लिए, नेट.ट्रांसपोर्ट के उदाहरण के साथ इसके ट्रांसपोर्ट फ़ील्ड को संशोधित करें। यह आपको कनेक्शन के लिए स्थानीय पते को नियंत्रित करने के लिए नेट.डायलर को नामित करने की अनुमति देता है।

कोड उदाहरण

नीचे दिया गया कोड स्निपेट दर्शाता है कि क्लाइंट को किसी निर्दिष्ट से कैसे जोड़ा जाए स्थानीय आईपी पता:

import (
    "net"
    "net/http"
    "net/http/httputil"
    "time"
)

func main() {
    // Resolve the local IP address
    localAddr, err := net.ResolveIPAddr("ip", "")
    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)
}

इस दृष्टिकोण का उपयोग करके, आप HTTP क्लाइंट के कनेक्शन द्वारा उपयोग किए गए आईपी पते को निर्दिष्ट कर सकते हैं। यह आपको नेटवर्किंग लचीलेपन के लिए आउटगोइंग आईपी को नियंत्रित करने की अनुमति देता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3