2009-02-23 13 views
13

मैंने SO_REUSEADDR का उपयोग किया है ताकि मेरा सर्वर हो जो शिकायत करने के लिए समाप्त हो गया हो कि सॉकेट पहले से ही उपयोग में है। मैं सोच रहा था कि SO_REUSEADDR के अन्य उपयोग हैं या नहीं? क्या किसी ने कहा उद्देश्य के अलावा सॉकेट विकल्प का उपयोग किया है?SO_REUSEADDR का उपयोग करता है?

+2

धन्यवाद, मैं ठीक वही चीज़ सोच रहा था। संबंधित प्रश्न: SO_REUSEADDR डिफ़ॉल्ट क्यों नहीं है? –

उत्तर

20

टीसीपी के लिए: प्राथमिक उद्देश्य एक ही पते पर एक बंद/मारे गए प्रक्रिया पुनः आरंभ करने के लिए है।

ध्वज की आवश्यकता है क्योंकि बंदरगाह TIME_WAIT स्थिति में जाता है ताकि यह सुनिश्चित किया जा सके कि सभी डेटा स्थानांतरित हो जाएं।

यदि दो सॉकेट एक ही इंटरफ़ेस और पोर्ट से बंधे हैं और समान मल्टीकास्ट समूह के सदस्य हैं, तो डेटा दोनों सॉकेट को वितरित किया जाएगा।

मुझे लगता है कि एक वैकल्पिक उपयोग डेटा को रोकने की कोशिश करने के लिए एक सुरक्षा हमला होगा।

(Source)


यूडीपी के लिए: SO_REUSEADDR के लिए बहुस्त्र्पीय

प्रयोग किया जाता है एक से अधिक प्रक्रिया ही SOCK_DGRAM UDP पोर्ट के लिए अगर बाँध बाँध सकता है() है इससे पहले:

int one = 1; setsockopt (जुर्राब, SOL_SOCKET, SO_REUSEADDR, & एक, sizeof (एक))

इस मामले में, हर भेजे बहुस्त्र्पीय या प्रसारण यूडीपी आंकड़ारेख के लिए किस्मत में साझा बंदरगाह सभी सॉकेट बंदरगाह के लिए बाध्य करने के लिए वितरित किया जाता है ।

(Source)

+2

स्पष्टीकरण की आवश्यकता है। एक सुनना बंदरगाह TIME_WAIT में जाता है, लेकिन स्वीकार किए गए कनेक्शन हो सकते हैं। TIME_WAIT यह सुनिश्चित करने के लिए नहीं है कि सभी डेटा स्थानांतरित हो जाएं, यह वही अंत बिंदुओं के बीच के बाद के कनेक्शन के साथ भ्रम से बचने के लिए है। – EJP

+0

प्रेषक पक्ष या रिसीवर पक्ष (यूडीपी के लिए: SO_REUSEADDR) पर 'बाइंड' हो रहा है? क्या होता है यदि प्रेषक और रिसीवर नेटवर्क पर अलग नोड्स हैं? – Sammy

5

अन्य मुख्य उपयोग यूडीपी पर एक ही बंदरगाह के लिए bind() करने के लिए कई सॉकेट अनुमति है। आपको लगता है कि ऐसा नहीं होगा, लेकिन कभी-कभी एकाधिक ऐप्स किसी दिए गए पोर्ट नंबर के साथ प्रसारण/मल्टीकास्ट पते पर सुनना चाहेंगे। यह किसी को एक विशिष्ट पते पर बाध्यकारी होने पर वाइल्डकार्ड पते से जुड़ने की अनुमति देता है। उदाहरण के लिए, अपाचे *: 80 और 10.11.12.13:80

संबंधित मुद्दे