2009-02-03 9 views
7

हमारे पास विरासत सॉफ्टवेयर का एक साधारण टुकड़ा है जिसके साथ हमें पोर्ट 15001 पर टीसीपी/आईपी का उपयोग करके संवाद करने की आवश्यकता है। हमें विरासत सॉफ्टवेयर के लिए पोर्ट 15001 पर सुनना होगा एक कनेक्शन बनाओ और फिर जो कुछ भी हमें भेजता है उसे पढ़ें।टीसीपी लिस्टनर: जीपीआरएस आईपी एड्रेस सहित प्रत्येक पते पर सुनें

हमने इंटरनेट पर इस समाधान का परीक्षण किया है और यह ठीक काम करता है। यदि हम एक जीपीआरएस टीसीपी/आईपी नेटवर्क में एक ही समाधान का परीक्षण करते हैं तो यह नहीं करता है।

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

तो शायद मेरे टीसीपीलिस्टर के साथ कुछ गड़बड़ है?

यह इस तरह आरंभ नहीं हो जाता:

tcpServer = new TcpListener(IPAddress.Any, TCP_PORT); 

मैं यह सोचते हैं रहा हूँ यह, क्योंकि मैं IPAddress.Any इस्तेमाल किया सिस्टम पर हर उपलब्ध आईपीवी 4 सक्षम इंटरफेस पर सुनता है?

क्या किसी को पता है कि दोनों नेटवर्क के बीच क्या अंतर हो सकता है? (भले ही कोई अंतर नहीं होना चाहिए) और यदि कुछ है तो मुझे अपने टीसीपीलिस्टर में बदलने की ज़रूरत है?

उत्तर

9

आपको आईपी एड्रेस के बजाय आईपी पता निर्दिष्ट करना है, जिसे आप सुनना चाहते हैं। किसी भी। here देखें। जब आप IPAddress का उपयोग करते हैं। कोई भी, यह स्वचालित रूप से आपके लिए नेटवर्क इंटरफ़ेस चुन देगा। एक निश्चित इंटरफ़ेस (आपके मामले में, जीपीआरएस) को सुनने के लिए आपको कन्स्ट्रक्टर में सही आईपी का उपयोग करना होगा।

This post प्रत्येक निक के लिए आईपी पता प्राप्त करने के बारे में अधिक जानकारी है।

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

+0

दिलचस्प है कि मोनो के तहत संकलित/चलने वाला एक परीक्षण कोड, आईपीएड्रेस पर 0.0.0.0 पर सुनना शुरू कर देता है। कोई भी कन्स्ट्रक्टर को पास कर दिया जाता है। –

+0

IPAddress का उपयोग कर रहा है। TcpListener (int पोर्ट) कन्स्ट्रक्टर का उपयोग करने के लिए समान कोई भी जिसे बहिष्कृत किया गया है? –

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