c++ - Rebind a socket to a different interface -
क्या एक मौजूदा Linux / POSIX C / C ++ लाइब्रेरी या उदाहरण कोड है कि कैसे एक भौतिक इंटरफ़ेस से दूसरे सॉकेट को रिबंक करें ?
उदाहरण के लिए, मेरे पास एक गर्तिका पर पिंग संचारित है जो कि भौतिक कनेक्शन ए के साथ जुड़ा हुआ है और मैं उस सॉकेट को भौतिक कनेक्शन बी में पुन: रिबंक करना चाहता हूं और पिंग पैकेट जारी रखने के लिए और कनेक्शन बी पर प्राप्त किया जा रहा है। (स्विच-ओवर के दौरान थोड़ी देर के बाद)।
मुझे केवल सत्र-कम प्रोटोकॉल के लिए इसकी आवश्यकता है।
धन्यवाद
अपडेट:
मैं पीपीपी और ईथरनेट उपकरणों के साथ उपयोग के लिए विफलता समाधान प्रदान करने की कोशिश कर रहा हूं।
मेरे पास एक बुनियादी स्क्रिप्ट है जो कि iptables, NAT और रूटिंग टेबल के उपयोग के जरिए 90% कार्यक्षमता को पूरा कर सकता है।
समस्या तब होती है जब विफलता उत्पन्न होती है, पिंग्स को द्वितीयक कनेक्शन पर भेजना जारी रहता है, हालांकि, उनका स्रोत आईपी पुराने कनेक्शन से होता है।
मैंने कुछ लोगों के साथ बात की है जो व्यावसायिक रूटर पर काम करते हैं और उनका सुझाव गौण को द्वितीयक अंतरफलक पर रिबिंड करना है।
अपडेट 2:
मैं इससे पहले निर्दिष्ट नहीं करने के लिए माफी चाहता हूं यह समाधान एक राउटर पर चलेगा मैं पिंग प्रोग्राम को नहीं बदल सकता क्योंकि यह क्लाइंट कंप्यूटर पर चलेगा मैंने पिंग को सिर्फ एक उदाहरण के रूप में प्रयोग किया है, कोई कनेक्शन जो सत्र-आधारित नहीं है, उस पर स्विच करने में सक्षम होना चाहिए। मैंने कई व्यावसायिक राउटर पर इस सुविधा का परीक्षण किया और यह काम करता है दुर्भाग्य से, उनके सॉफ़्टवेयर मालिकाना हैं, हालांकि, विभिन्न वार्तालापों और परीक्षणों से, मैंने पाया कि वे विफलता पर सॉकेट्स को फिर से बाध्य कर रहे हैं।
आपके अद्यतित पोस्ट के रूप में, समस्या यह है कि रूटिंग जानकारी बदलना आपके पिंग के स्रोत पते को बदलने नहीं जा रहा है, यह केवल दूसरे इंटरफ़ेस को बाध्य करेगा कुछ प्रासंगिक जानकारी है।
आपको पिंग प्रोग्राम को बदलने की आवश्यकता होगी। आप एक सॉकेट-प्रति-इंटरफ़ेस दृष्टिकोण का उपयोग कर सकते हैं और किसी भी तरह से प्रोग्राम को सूचित करते हैं कि विफल होने पर या फिर आपको सॉकेट बंद करना होगा और फिर दूसरे इंटरफेस से जुड़ना होगा।
आप इंटरफ़ेस जानकारी को एसओओसीजीआईएफसीएनएफ़ विकल्प के साथ ioctl () को कॉल करने और लौटे ढांचे के माध्यम से पाशन सहित कुछ तरीकों के लिए आवश्यक हो सकता है इंटरफ़ेस पता जानकारी प्राप्त करें।
Comments
Post a Comment