2011-09-01 10 views
16

हमारे पास एक कस्टम एप्लिकेशन है जिसे अपने स्वयं के पोर्ट नंबर पर अनुरोध करने की आवश्यकता है। हम वास्तव में परवाह नहीं करते कि संख्या क्या है, हालांकि हम निर्णय लेने के बाद उस बंदरगाह से चिपके रहेंगे। मैं उस नंबर का चयन कैसे करूं जो कम से कम अन्य अनुप्रयोगों या सेवाओं के साथ संघर्ष करने की संभावना है जो उपयोगकर्ता के सिस्टम पर चल रहे हैं?कस्टम ऐप के लिए स्थिर पोर्ट नंबर का चयन कैसे करें?

क्या हमारे पास कोई नियम या मानक हैं जिनका पालन करना चाहिए?

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

+0

एक स्पष्टीकरण: एक बार जब हम एक बंदरगाह चुनते हैं, तो हमें इसके साथ रहना होगा। गतिशील एक का उपयोग नहीं कर सकते हैं। हम एक कस्टम एसएफटीपी सर्वर बना रहे हैं और हमें अपने ग्राहकों को यह बताना होगा कि यह किस पोर्ट पर चल रहा है। – ccleve

उत्तर

8

के जरिए इसका उत्तराधिकारी है यदि आप भविष्यवाणी नहीं कर सकते कि आपका आवेदन किस प्रकार चल रहा है, तो बस ' इस से परेशान नहीं है। 1024 से अधिक संख्या चुनें और इसे कॉन्फ़िगर करने योग्य भी बनाएं ताकि उपयोगकर्ता किसी अन्य सेवा/एप्लिकेशन के साथ संघर्ष के मामले में इसे बदल सके।

बेशक

आप अभी भी (व्यंग्य की तरह प्रॉक्सी) 8080 (वैकल्पिक HTTP) या 3128 की तरह बहुत ही आम बंदरगाहों से बच सकते हैं 1666 (मजबूरन), आदि आप में जाना जाता बंदरगाहों here की एक व्यापक सूची की जांच कर सकते हैं, या पर एक नज़र/etc/सेवाओं।

12

एक स्थिर आवेदन के लिए, एक पोर्ट खोजने के लिए /etc/services जांचने पर विचार करें जो आप किसी भी अन्य चीज़ के साथ टकराव नहीं करेंगे और कहीं और सामान्य उपयोग में नहीं है।

$ tail /etc/services 
nimspooler  48001/udp      # Nimbus Spooler 
nimhub   48002/tcp      # Nimbus Hub 
nimhub   48002/udp      # Nimbus Hub 
nimgtw   48003/tcp      # Nimbus Gateway 
nimgtw   48003/udp      # Nimbus Gateway 
com-bardac-dw 48556/tcp      # com-bardac-dw 
com-bardac-dw 48556/udp      # com-bardac-dw 
iqobject  48619/tcp      # iqobject 
iqobject  48619/udp      # iqobject 
6

आप पोर्ट संख्या के बारे में परवाह नहीं करते हैं, और कोई आपत्ति नहीं है कि यह हर बार अपने कार्यक्रम चलाया जाता है बदल जाता है, बस बंदरगाह के लिए बाध्य नहीं है इससे पहले कि आप पर सुनने के लिए (या पोर्ट के साथ बाइंड 0, यदि आप एक विशिष्ट आईपी पता बांधना चाहते हैं)। दोनों मामलों में, आप ओएस को अपने लिए एक मुफ्त बंदरगाह चुनने के लिए कह रहे हैं।

सुनने के बाद, getsockname का उपयोग करके पता लगाएं कि कौन सा बंदरगाह चुना गया था। आप इसे एक फ़ाइल में लिख सकते हैं, स्क्रीन पर इसे प्रदर्शित कर सकते हैं, बच्चे को fork, आदि

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