c बनट एएससी सी में बंदरगाह 80 में एक सॉकेट बाइंडिंग




हम्बनटोटा बंदरगाह मुद्दा (8)

यदि आप एक साझा सिस्टम (एक विश्वविद्यालय कंप्यूटर की तरह) पर हैं और रूट नहीं हैं, तो उस अनुमति प्राप्त करने का कोई आसान तरीका नहीं है, डिजाइन द्वारा

जब मैं c बंदरगाह में 80 गर्तिका को बाइंड करने की कोशिश करता हूं, तो मुझे हमेशा त्रुटि मिलती है, कि मुझे इस पोर्ट का उपयोग करने की अनुमति नहीं है क्या यह अनुमति प्राप्त करने का एक आसान तरीका है?


आप इस ट्यूटोरियल को सी / सी ++ के साथ नेटवर्क प्रोग्रामिंग के लिए बहुत उपयोगी पाएंगे।

और, एएनएसआई सी के पास नेटवर्क तक पहुंचने का कोई रास्ता नहीं है। यह ओएस आपूर्ति की गई पुस्तकालयों (बीएसडी सॉकेट एपीआई, जो विंडोज को winsock रूप में भी पोर्ट किया गया है) जो इस क्षमता प्रदान करते हैं।


जैसे ही @ चार्ल्स बेली कहते हैं ... और मैं यह जोड़ना चाहूंगा कि यही वजह है कि 8080 पर HTTP सर्वर पते को पोर्ट एक्सटेक्शन द्वारा http: //some.url : 8080 /


हाँ, आप पोर्ट 80 से आसानी से बाँध सकते हैं। अपाचे का उपयोग करें एक वेब अनुप्रयोग लिखें अपाचे पोर्ट 80 से जुड़ा हुआ है और आपके वेब एप्लिकेशन को चलाता है

क्या आप अगले अपाचे लिखने का प्रयास कर रहे हैं? यदि हां, तो आपको अपने ऑपरेटिंग सिस्टम में setuid API कॉल के बारे में जानने की आवश्यकता होगी।

यदि आप अपाचे का एक नया संस्करण नहीं लिख रहे हैं, तो अधिकांश लोग गैर-विशेषाधिकार वाले पोर्ट का उपयोग करते हैं 8000 लोकप्रिय है, इसलिए 8080 है


1024 और नीचे पोर्ट्स को विशेषाधिकारित बंदरगाह कहा जाता है, इन बंदरगाहों के लिए बाइंडिंग को उन्नत अनुमति की आवश्यकता होती है।

1024 से अधिक पोर्ट्स को एम्फ़िमल पोर्ट्स कहा जाता है। इनके लिए बाइंडिंग के लिए कोई विशेष अनुमति नहीं है।

निजी बंदरगाहों तक पहुंच प्राप्त करने का सबसे आसान तरीका रूट उपयोगकर्ता होना है।


सामान्य प्रोग्राम "विशेषाधिकारित" बंदरगाहों को बाध्य नहीं कर सकते हैं - 1024 से नीचे। यह यूनिक्स जैसी ऑपरेटिंग सिस्टम का एक अप्रचलित सुरक्षा सुविधा है।

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

यदि आप किसी भी अन्य सिस्टम पर चल रहे हैं, तो मैं debian या ubuntu ;-) को स्थापित करने का सुझाव देता हूं।


एस। लोट के उत्तर में बहुत नकारात्मक प्रतिक्रियाएं हो सकती हैं लेकिन उनका विचार बेवकूफ से दूर है: यदि मूल प्रश्न एक वास्तविक कार्यक्रम (कोई स्कूल असाइनमेंट) के लिए नहीं है, तो उसे एक HTTP सर्वर के पीछे एक आवेदन के रूप में विकसित करना अक्सर उचित विकल्प होता है। इस तरह, आप बहुत कम स्तर के विवरण को एक अच्छी और अच्छी तरह से डिबग किए गए प्रोग्राम अपाचे को छोड़ सकते हैं।

आवेदन एक सीजीआई नहीं है, यह एक अपाचे मॉड्यूल हो सकता है। अपाचे, संस्करण 2 से, अब सिर्फ एक HTTP सर्वर नहीं है अब यह नेटवर्क प्रोग्राम विकसित करने के लिए एक मंच है। अपाचे मॉड्यूल लिखना मूल प्रश्न का सही उत्तर हो सकता है ( अपाचे दस्तावेज़ीकरण देखें)


परंपरागत रूप से केवल रूट रूट को 1024 के अंतर्गत बंदरगाहों में बांधा जा सकता है।







webserver