2013-11-04 11 views
6

मेरे कंप्यूटर के आईपी के माध्यम से पहुँचा जा सकता है 192.168.0.100, मैंQTcpServer केवल स्थानीय नेटवर्क पर स्थानीय होस्ट

if (!tcpServer->listen(QHostAddress::LocalHost, 1234)) { 

के साथ मेरी QTcpServer शुरू जब मैं netcat 192.168.0.100 1234 के साथ कनेक्ट करने का प्रयास है, कनेक्शन अस्वीकार कर दिया है, लेकिन netcat localhost 1234 सफल होता है ।

उसी समय, यदि मैं netcat -l -p 1234 के साथ सुनता हूं, तो मैं बिना किसी समस्या के 192.168.0.100 और localhost पर कनेक्ट कर सकता हूं।

यह मुझे मेरे सिर को खरोंच कर रहा है, यह क्यों हो रहा है?

उत्तर

6

बाहर से कनेक्शन स्वीकार करने के लिए, आपको पर 127.0.0.1 या localhost पर नहीं सुनना होगा। उत्तरार्द्ध केवल उसी मशीन से आने वाले कनेक्शन की अनुमति देगा। यह QHostAddress::LocalHost का मूल्य भी है।

तो पहले तर्क को QHostAddress::Any पर बदलें और इसे काम करना चाहिए।

+0

के लिए सुनने के लिए, इतने पर है मुझे लगता है कि 'QHostAddress :: LocalHost' 'QHostAddress :: Any' जैसा ही है। इसे क्लीयर करने के लिए शुक्रिया। – sashoalm

+1

हाँ यह भ्रम का लगातार कारण है। '127.0.0.1' को सुनना उन मामलों के लिए है जहां आप * से * कनेक्शन से बाहर की अनुमति नहीं देना चाहते हैं, जैसे कि जब आप अपने वेब सर्वर के समान मशीन पर डीबी सर्वर चला रहे हों और खुलासा नहीं करना चाहते यह आदि –

+0

ऐसा लगता है कि यह भी दूसरी तरफ जाता है। मैंने 'tcpServer-> सुनो (QHostAddress (" 1 9 2.168.56.1 "), 1234 के साथ प्रयास किया)) और अब यह 'नेटकैट लोकलहोस्ट 1234', केवल' नेटकैट 192.168.56.1' 'स्वीकार नहीं करेगा। – sashoalm

3

localhost एक अलग नेटवर्क इंटरफेस अब तक मुझे हमेशा यही लगता स्थानीय होस्ट पर सुन मतलब है कि यह है कि आप सभी कनेक्शनों कि स्थानीय मशीन तक पहुंच पाने

आप QHostAddress::Any उपयोग कर सकते हैं बाहरी कनेक्शन

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