2012-07-18 11 views
5

TLDR से फिर से कनेक्ट हो रहा है: क्या कभी-कभी विफल होने पर एक टीसीपी सर्वर से पुनः कनेक्ट करने के लिए पुन: प्रयोज्य कोड मौजूद होता है?स्वचालित रूप से एक टीसीपी होस्ट


मैं एक सर्वर अनुप्रयोग लिख रहा हूँ - यह hal कहते हैं - वह भी अन्य सर्वर को कुछ TCP कनेक्शन खोलता है - उन्हें xbmc के बीच में। मैंने मूल रूप से इसे लिखा था ताकि जब xbmc विफल हो गया, xbmc एरलांग प्रक्रिया बंद हो जाएगी और बाद में इसके पर्यवेक्षक द्वारा पुनरारंभ किया जाएगा।

जाहिर है, यह erlang में लगातार टीसीपी कनेक्शन करने का एक अच्छा तरीका नहीं है। सबसे पहले, यह वास्तव में काम नहीं करता है: जब xbmc विफल हुआ, प्रक्रियाएं बहुत तेज़ी से पुन: प्रारंभ हो जाएंगी, और पर्यवेक्षक पूरे hal प्रोग्राम को बंद कर देगा। दूसरा, मुझे स्पष्ट रूप से पर्यवेक्षक का उपयोग नहीं करना चाहिए: Erlang Supervisor Strategy For Restarting Connections to Downed Hosts (जैसा कि मैंने इसे पढ़ा है, यह लिंक किया गया प्रश्न केवल जवाब देता है "पर्यवेक्षक इसे हल करता है?", और मेरे प्रश्न का डुप्लिकेट नहीं है)

मैं हूं ऐसा लगता है कि यह एक सामान्य रूप से सामान्य उपयोग मामले की तरह लगता है, एक टीसीपी कनेक्शन को यथासंभव कनेक्ट किया गया है, यहां तक ​​कि एक मेजबान जो अब और नीचे चला जाता है। क्या कुछ ओटीपी या अन्य लाइब्रेरी कोड है जो मुझे इसे प्राप्त करने के लिए उपयोग करना चाहिए?

उत्तर

3

नहीं, ओटीपी में कुछ भी नहीं है जो आपके लिए यह करता है।

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

+0

धन्यवाद। "नहीं" का जवाब देना हमेशा आसान नहीं होता :) आपके अगले ओपन सोर्स प्रोजेक्ट के लिए, मैं इस कनेक्शन मैनेजर को करने का प्रस्ताव करता हूं: डी –

+0

जैसा होता है, मैं अब इसे कम या ज्यादा लिख ​​रहा हूं। अगर मैं इसे जारी करता हूं तो मैं अपना उत्तर अपडेट करूंगा। – archaelus

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