2014-05-09 5 views
6

मारना मान लें कि मेरे पास एक यूडीपी सॉकेट है जो एक निश्चित पते/बंदरगाह पर खुला था और फिर फांसी लगा दी गई थी। जब मैं एक ही यूडीपी सॉकेट (UDPClient) को उसी पते/बंदरगाह पर शुरू करने का प्रयास करता हूं तो यह सॉकेट अपवाद उठाता है क्योंकि यह पाता है कि यह पहले से ही उपयोग में है।अवरुद्ध यूडीपी सॉकेट

क्या फांसी वाली सॉकेट कोड से मारना संभव है ताकि मैं इसका पुन: उपयोग कर सकूं?

संपादित करें: यहाँ कोड के कारण यूडीपी अवरुद्ध रहने के लिए (Apparently) Gracefully Closed UDPClient leaves the socket blocked

+1

ऐसा नहीं है कि मुझे पता है। पारंपरिक रूप से, यदि ऐसा हो सकता है, तो आपको कनेक्शन पर टाइमआउट सेट करना चाहिए। वैकल्पिक रूप से, पुरानी सॉकेट ठीक होने पर लगातार इसे करने में संभावित समस्याएं होती हैं, लेकिन आप एक नई सॉकेट से कनेक्ट करने से पहले '.SetSocketOption (सॉकेटऑप्शनलेवल सॉकेट, सॉकेटऑप्शननाम। रीयूज एड्रेस, सच) 'पर कॉल कर सकते हैं। –

+1

क्या आपने इसे बंद करने का प्रयास किया है? –

+0

आप कुछ 'टर्मिनेट' ध्वज सेट कर सकते हैं और फिर पोर्टिंग को पढ़ने के लिए बंदरगाह को अपने आप को एक डेटाग्राम भेज सकते हैं(), या जो कुछ भी, वापस आते हैं। –

उत्तर

0

आप सॉकेट में ReuseAddress सॉकेट विकल्प सेट कर सकते हैं इतना है कि यह एक अलग सॉकेट पर एक ही आईपी & पोर्ट पर सुनने के लिए अनुमति देता है।

+0

कोशिश की, काम नहीं किया। –

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