मैं ज़ैन लिंक्स से सहमत हूं। इसकी कोई गारंटी नहीं है, लेकिन आप इस पर डेटा भेजकर लगभग अनिश्चित काल तक एक कनेक्शन को जीवित रख सकते हैं, मानते हैं कि कोई कनेक्टिविटी या बैंडविड्थ समस्या नहीं है।
आम तौर पर मैं आवेदन स्तर के लिए जीवित दृष्टिकोण के लिए गया हूं, हालांकि आमतौर पर यह क्लाइंट स्पेक में रहा है इसलिए मुझे इसे करना पड़ा। लेकिन बस हर मिनट या दो डेटा के कुछ छोटे टुकड़े भेजें, जिसके लिए आप किसी प्रकार की पावती की अपेक्षा करते हैं।
चाहे आप स्वीकार करने में विफलता की गिनती करते हैं क्योंकि असफल कनेक्शन आपके ऊपर है। आम तौर पर मैंने अतीत में ऐसा किया है, हालांकि एक मामला था, मैंने कनेक्शन को छोड़ने के लिए लगातार तीन असफल प्रतिक्रियाओं का इंतजार किया था क्योंकि कनेक्शन के दूसरे छोर पर ऐप जवाब देने के बारे में बेहद निराशाजनक था "क्या आप वहां हैं ? " अनुरोध।
यदि कनेक्शन विफल रहता है, जो किसी बिंदु पर शायद उसी नेटवर्क पर मशीनों के साथ भी होगा, तो बस इसे पुन: स्थापित करने का प्रयास करें। यदि वह एक निश्चित संख्या में विफल रहता है तो आपको एक समस्या है। यदि आपका कनेक्शन थोड़ी देर के लिए कनेक्ट होने के बाद लगातार विफल रहता है, तो आपको एक समस्या है। दोनों मामलों में सबसे अधिक संभावना है कि यह संभवतः आपके कोड के बजाय कुछ नेटवर्क समस्या है, या शायद आपकी मशीन पर टीसीपी/आईपी स्टैक के साथ एक समस्या है (ज्ञात है: मुझे QNX के पुराने संस्करण पर इसके साथ समस्याएं आईं - यह बस यादृच्छिक रूप से गिरना)। यह कहकर कि आपके पास सॉफ़्टवेयर समस्या हो सकती है, और निश्चित रूप से जानने के लिए एकमात्र तरीका अक्सर एक डीबगर संलग्न करना है, या वहां कुछ लॉगिंग प्राप्त करना है। जैसे यदि आप हमेशा सफलतापूर्वक कनेक्ट कर सकते हैं, लेकिन एक बार बाद में आप एसीके प्राप्त करना बंद कर देते हैं, फिर भी कनेक्ट होने के बाद भी, हो सकता है कि आपका सर्वर डेडलॉकिंग हो या लूप या कुछ में फंस जाए।
वास्तव में उपयोगी है कि विभिन्न लोड स्थितियों के तहत लंबे समय से चलने वाले परीक्षणों की एक श्रृंखला स्थापित करने के लिए, केवल जिंदा रखने से ही आप वहां हैं?/एके अनुरोध और प्रतिक्रियाएं, सर्वर को बिल्कुल बल्लेबाजी करने के लिए।यह आम तौर पर आपको अपने सॉफ़्टवेयर घटकों के बारे में अधिक आत्मविश्वास प्रदान करेगा, और वास्तव में कुछ अजीब समस्याओं को हल करने में वास्तव में उपयोगी हो सकता है जो आपके कनेक्शन के साथ कोई समस्या नहीं पैदा करेगा, हालांकि लेन-देन के साथ समस्याएं हो सकती हैं। उदाहरण के लिए, मैं एक बार एक टेलीकॉम एप्लिकेशन सर्वर लिख रहा था जिसने संख्या अनुवाद जैसे सेवाएं प्रदान कीं, और हम इसे एक समय में दिनों के लिए चलाना छोड़ देंगे। बात यह थी कि जब शनिवार पूरे दौर में आया, तो वह हर कॉल अनुरोध को अस्वीकार कर देगा, जिसमें लाखों कॉल की राशि थी, और हमें नहीं पता था कि क्यों। यह कुछ दिनांक रूपांतरण कोड में एक टाइपो की वजह से हुआ जो केवल शनिवार को एक समस्या का कारण बनता था।
उम्मीद है कि मदद करता है।
स्रोत
2008-10-01 17:32:13
हमेशा के लिए यदि आपके पास सही KeepAlive अंतराल है, तो संबंधित: http://stackoverflow.com/questions/3907537/keep-alive-tcp-ip-connected-sockets-over-the-internet-when-how-and- कितना/5149662 # 5149662 – markmnl
1 999 में लोगों ने क्या जवाब दिया: https://ask.slashdot.org/story/99/09/19/2150236/longest-open-tcp-connection – user3041714