2011-10-13 15 views
6

मेरे पास प्रसारण प्रसारण के लिए एक बंदरगाह में एक यूडीपी सॉकेट सुन रहा है और यह ठीक काम कर रहा है।यूडीपी सुनना सॉकेट नेटवर्क कॉन्फ़िगरेशन में परिवर्तन के बाद सुनना बंद कर देता है

हालांकि, जब मैं ओएस (विंडोज 7) को हाइबरनेट और फिर से शुरू करता हूं, तो सॉकेट बस डेटा प्राप्त करना बंद कर देता है (और मैं देख सकता हूं कि वायरसहार्क का उपयोग करके डेटा आ रहा है)।

यह भी होता है यदि मैं कोई नेटवर्क सेटिंग्स बदलता हूं, अपना आईपी पता बदलता हूं, नेटवर्क एडाप्टर अक्षम और सक्षम करता हूं।

ओएस हाइबरनेटिंग करते समय सभी नेटवर्क एडाप्टर को अक्षम करने और फिर से शुरू होने पर उन्हें फिर से सक्षम करने के लिए अक्षम लगता है।

select बस 0 (टाइमआउट) देता है जो मुझे कोई डेटा प्राप्त नहीं होने पर अलग नहीं है। मुझे कहीं भी इस व्यवहार के लिए कोई संदर्भ नहीं मिला।

यदि मैं सॉकेट बंद करता हूं और इसे फिर से बना देता हूं, तो यह फिर से काम करना शुरू कर देता है।

मेरा टीसीपी सुनना सॉकेट अभी भी ओएस को फिर से शुरू करने के बाद ठीक काम कर रहा है।

इस स्थिति को कैसे पहचानें और सही करें इस पर कोई विचार?

EDIT: यह अभी भी सीधे डेटा को सीधे ठीक से प्राप्त कर रहा है, यह अब ब्रॉडकास्ट प्रसारण प्राप्त नहीं करता है।

EDIT2: बस है कि अगर मैं सॉकेट में लिखने (कहीं भी करने के लिए एक डमी पैकेट भेज) इसे फिर से काम करने के लिए शुरू होता है ...

+0

आप संबंधित विंडोज़ संस्करणों के साथ टैग (ओं) जोड़ना चाहेंगे – jgauffin

+0

सॉकेट किस पते से जुड़ा हुआ है? – User

उत्तर

1

मैं अपने कोड को स्पष्ट रूप से "0.0 के लिए सॉकेट बांधता नहीं है लगता है की खोज की .0.0 "पता। तो जब आप इसे भेजते हैं तो उस समय उपलब्ध इंटरफ़ेस आईपी को बांधता है। जब यह आईपी बदल जाता है या इंटरफ़ेस अक्षम होता है, तो यह सॉकेट टीसीपी/आईपी स्टैक द्वारा रीसेट किया जाएगा। आपके टीसीपी सॉकेट में, आपको "0.0.0.0" पता होना चाहिए था, इसलिए यह हमेशा किसी भी आईपी/इंटरफ़ेस परिवर्तन से स्वतंत्र कनेक्शन के लिए सुनेंगे। आप अपने udp सॉकेट को इसके बारे में कोई भी डेटा भेजने से पहले "0.0.0.0" तक बाध्य कर सकते हैं। यह हाइबरनेशन या आईपी परिवर्तनों के बाद भी काम करेगा।

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