गो में एक http.क्लाइंट को एक आईपी पते से बांधना
वितरित कंप्यूटिंग के दायरे में, स्रोत आईपी को नियंत्रित करना अक्सर आवश्यक होता है वह पता जहां से HTTP अनुरोध उत्पन्न होते हैं। एक क्लाइंट मशीन पर एकाधिक एनआईसी के साथ, यह ग्रैन्युलैरिटी आवश्यक हो सकती है।
निम्नलिखित बुनियादी HTTP क्लाइंट कोड पर विचार करें:
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()
}
इस क्लाइंट को एक विशिष्ट एनआईसी या आईपी पते से जोड़ने के लिए, हमें इसके ट्रांसपोर्ट फ़ील्ड को संशोधित करने की आवश्यकता है। हम एक कस्टम नेट.ट्रांसपोर्ट का उपयोग करेंगे जो एक कस्टम नेट.डायलर का उपयोग करता है। बदले में, नेट.डायलर हमें आउटगोइंग कनेक्शन के लिए स्थानीय पता निर्दिष्ट करने की अनुमति देता है।
import (
"net"
"net/http"
)
func main() {
localAddr, err := net.ResolveIPAddr("ip", "")
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,
},
}
}
इस संशोधन के साथ, हमारा HTTP क्लाइंट अब निर्दिष्ट आईपी पते से जुड़ा हुआ है, यह सुनिश्चित करते हुए कि सभी आउटगोइंग अनुरोध वांछित एनआईसी से उत्पन्न होते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3