2012-09-28 5 views
5

मेरे पास एक रूबी टीसीपीएसकेट क्लाइंट है जो सर्वर से जुड़ा हुआ है।टीसीपीएसकेट (या बंद सॉकेट का पता लगाने के तरीके को फिर से कनेक्ट करें)

मैं यह देखने के लिए कैसे जांच सकता हूं कि डेटा भेजने से पहले सॉकेट कनेक्ट है या नहीं?

क्या मैं डिस्कनेक्ट की गई टीसीपीएसकेट को "बचाव" करने का प्रयास करता हूं, फिर से कनेक्ट करता हूं और फिर भेजता हूं? यदि हां, तो क्या किसी के पास एक साधारण कोड नमूना है क्योंकि मुझे नहीं पता कि कहां से शुरू करना है :(

मुझे बहुत गर्व था कि मैं रेल में लगातार जुड़े क्लाइंट टीसीपीएसकेट प्राप्त करने में कामयाब रहा। फिर सर्वर ने क्लाइंट को मारने का फैसला किया और यह सब बिखर गया;)

संपादित

मैं इस कोड का उपयोग किया है समस्याओं में से कुछ दौर पाने के लिए - यह फिर से कनेक्ट करने के लिए यदि कनेक्ट नहीं की कोशिश करेंगे, लेकिन मामला अगर संभाल नहीं होगा सर्वर नीचे है (यह पुनः प्रयास जारी रहेगा)। क्या यह सही दृष्टिकोण की शुरुआत है? धन्यवाद

def self.write(data) 
    begin 
    @@my_connection.write(data) 
    rescue Exception => e 
    @@my_connection = TCPSocket.new 'localhost', 8192 
    retry 
    end 
end 

उत्तर

1

क्या मैं आमतौर पर इन स्थितियों से इस प्रकार में क्या एक चर में लगातार पुनर्प्रयास का ट्रैक रखने और कुछ अन्य चर कि पुन: प्रयास करें छत सेट है। एक बार जब हम छत पर आ जाएंगे, तो कुछ प्रकार के अपवाद फेंक दें जो इंगित करता है कि नेटवर्क या सर्वर समस्या है। आप पाठ्यक्रम की सफलता पर पुनः प्रयास संख्या चर को रीसेट करना चाहते हैं।

+0

इसके अलावा, सॉकेट पर एक बंद विधि होनी चाहिए। मैं थोड़ा जंगली लेकिन आसानी से परीक्षण/irb/pry में पुष्टि की हूँ –

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