पोर्ट एक स्ट्रिंग क्यों है और पूर्णांक नहीं है?


103

Portविधि एक स्ट्रिंग और नहीं एक पूर्णांक देता है। उसके कारण क्या है और क्या ":" के साथ पोर्ट को उपसर्ग करना सुरक्षित है?

जवाबों:


143

ऐसा इसलिए है क्योंकि बृहदान्त्र के बाद जो दिखाई देता है वह या तो पोर्ट नंबर या सेवा का नाम हो सकता है।

निम्नलिखित एक मान्य उदाहरण है जहां सेवा नाम का उपयोग पोर्ट नंबर के बजाय किया जाता है:

listener, err := net.Listen("tcp", "localhost:https") // port 443
// ...

किसी विशेष सेवा के लिए पोर्ट मैपिंग का उपयोग करके देखा जा सकता है net.LookupPort। यूनिक्स सिस्टम पर, /etc/servicesफाइल मैपिंग के लिए तैयार है।


1
मैं हमेशा खुले प्रकार / बंद प्रकार के द्विभाजन द्वारा साज़िश कर रहा हूँ। मैं एक मिश्रित प्रकार की तरह कुछ देखना चाहता हूं, जहां कुछ चूक हैं (यहां उदाहरण के लिए प्रसिद्ध बंदरगाह और सेवाएं) लेकिन यह भी उन्हें विस्तारित करने की अनुमति देता है, अंततः ऑटोकंप्लीमेंट का समर्थन करने के लिए। मेरे सीमित कामकाजी ज्ञान में ADTs निकटतम आते हैं, शायद स्विफ्ट ADTs इसे भी सीधे व्यक्त कर सकते हैं।
स्टीफन हैंके

0

किसी संख्या के लिए डिफ़ॉल्ट मान 0 है: यदि कोई फ़ंक्शन

 func (u * URL) Port () string

पोर्ट स्टिंग के बजाय रिटर्न नंबर 0 होगा

पोर्ट 0 टीसीपी / आईपी नेटवर्किंग में एक आरक्षित पोर्ट है, जिसका अर्थ है कि इसका उपयोग टीसीपी या यूडीपी संदेशों में नहीं किया जाना चाहिए। हालाँकि, पोर्ट 0 नेटवर्क प्रोग्रामिंग में विशेष महत्व रखता है, विशेषकर यूनिक्स सॉकेट प्रोग्रामिंग: सिस्टम-आबंटित, गतिशील पोर्ट के लिए अनुरोध करने के लिए।

यह कई कार्यों में प्रोग्रामिंग की आवश्यकता है


LibGURL में, url.port()एक स्ट्रिंग देता है ... लेकिन GURL भी प्रदान करता है url.has_port()। इसलिए सैद्धांतिक रूप से हम अंतर कर सकते हैं http://example.com:/path(एक पोर्ट है, लेकिन port()खाली-स्ट्रिंग है) से http://example.com/path(पोर्ट नहीं है)। बेशक GURL खुद ऐसा नहीं करता है! यह भी रिपोर्ट http://example.com:80/pathकरता है कि "स्पष्ट रूप से निर्दिष्ट पोर्ट नहीं है", इस आधार पर कि योजना के साथ स्पष्ट रूप से निर्दिष्ट पोर्ट निरर्थक है। जो पागल है , लेकिन कभी दिमाग नहीं ... प्वाइंट है, Stringनहीं है Optional। उन्हें भ्रमित मत करो।
क्क्सप्लसोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.