जावा में, मुझे एक ही कार्यक्रम के कई उदाहरणों के बीच संचार के लिए एक पोर्ट नंबर पकड़ने की आवश्यकता है। अब, मैं बस कुछ निश्चित संख्या चुन सकता हूं और इसके साथ जाऊंगा। लेकिन मैं सोच रहा हूं कि पोर्ट नंबर को गतिशील रूप से चुनने का कोई तरीका है, ताकि मुझे पोर्ट नंबर सेट करने के साथ अपने उपयोगकर्ताओं को परेशान न करना पड़े।गतिशील रूप से पोर्ट नंबर चुनना?
यहाँ एक विचार मैं था, जो इस तरह काम करता है:
- एक निश्चित प्रारंभिक पोर्ट संख्या ए
- कार्यक्रम 'MyApp' शुरू होता है, बंदरगाह ए हड़पने के लिए
- अगर यह सफल होता है की कोशिश करता है नहीं है , तो यह 'MyApp' का पहला उदाहरण है। किया हुआ।
- यदि यह विफल हो जाता है, तो यह पोर्ट ए से पूछता है कि क्या ए पर प्रोग्राम 'MyApp' का उदाहरण है। यदि हां, उस उदाहरण के साथ संवाद करें। किया हुआ। यदि नहीं, तो पोर्ट ए + 1 को पकड़ने का प्रयास करें। और यदि उस बंदरगाह का उपयोग करने वाला कोई अन्य प्रोग्राम है (या तो 'MyApp' का उदाहरण नहीं है), तो ए + 2, फिर ए + 3, और इसी तरह से पकड़ें।
क्या यह रणनीति समझ में आती है? या क्या पोर्ट नंबर को गतिशील रूप से चुनने का एक बेहतर तरीका है?
आपको ऐसा करने की आवश्यकता नहीं है। यदि आप सॉकेट बनाते हैं, तो सिस्टम स्वचालित रूप से आपके लिए अगले उपलब्ध पोर्ट नंबर को असाइन करता है। कृपया, सॉकेट एपीआई के लिए प्रलेखन सावधानी से पढ़ें जो आप उपयोग कर रहे हैं। प्रोग्रामिंग भाषा/लाइब्रेरी पर आप भी अधिक टैग प्रदान कर रहे हैं। –
@dma_k: जावा में, जाहिर है कि आपको यह प्राप्त करने के लिए पोर्ट 0 से बांधना होगा (काउंटर-अंतर्ज्ञानी, मुझे पता है)। यदि आप बिल्कुल बंधे नहीं हैं, तो आप इसे सुनने में सक्षम नहीं होंगे। :-P –
बहुत सारे सॉकेट कार्यान्वयन मुझे याद है कि इस "काउंटर-सहज" चाल का उपयोग गतिशील रूप से निर्दिष्ट पोर्ट के लिए पूछने के लिए किया जा सकता है ... यहां कुछ भी खास नहीं है। – jldupont