यह आपके रहने-जीवित जांच के हिस्से के रूप में लागू करना बहुत आसान होना चाहिए। जब तक आप गिराए गए कनेक्शन के मुद्दे को पूरी तरह से अनदेखा नहीं कर लेते हैं, तो आपके पास शायद एक जीवित प्रणाली है जो समय-समय पर संदेश क्लाइंट-> सर्वर भेजती है और इसके विपरीत यदि कोई संचार नहीं हुआ है। सॉकेट स्थिति में एक सरल "अंतिम डेटा प्राप्त समय" मान जोड़ने के लिए यह छोटा होना चाहिए, और फिर सॉकेट को बंद करें यदि यह DateTime.Now
से बहुत दूर हो जाता है।
लेकिन अधिक महत्वपूर्ण सवाल "क्यों?" है। सबसे अच्छा समाधान इस बात पर निर्भर करता है कि इसके लिए आपके कारण क्या हैं। क्या आप उन डेटा को डंप करके सर्वर को अधिक क्लाइंट के लिए उपयोग करने योग्य बनाना चाहते हैं जो डेटा नहीं भेज रहे हैं? आप शायद सबकुछ खराब कर देंगे, क्योंकि टीसीपी सॉकेट के लिए टाइमआउट 2-4 मिनट की तरह अधिक होते हैं, इसलिए जब आप 20 के बाद क्लाइंट को डिस्कनेक्ट करते हैं और फिर से कनेक्ट होते हैं, तो अब यह एक के बजाय दो सर्वर-साइड पोर्ट का उपयोग करेगा। उफ़।
हटाए गए उत्तर पर आपकी टिप्पणी के लिए, and connection without data send and receive i think it gonna waste your threads
आपकी वास्तविक समस्या के करीब अंक - आपके सर्वर के कनेक्शन की मात्रा का कोई संबंध नहीं होना चाहिए कि सर्वर उन कनेक्शनों की सेवा के लिए कितने थ्रेड का उपयोग करता है। तो एकमात्र चीज एक खुला कनेक्शन "अपशिष्ट" मूल रूप से स्मृति का एक छोटा सा है (प्रति कनेक्शन की आपको आवश्यक मेमोरी की मात्रा के आधार पर, साथ ही इसके बफर के साथ सॉकेट लागत) और एक टीसीपी पोर्ट। यह कुछ अनुप्रयोगों में एक मुद्दा हो सकता है, लेकिन यदि आप कभी भी "लोड" के उस स्तर तक पहुंच जाते हैं, तो आप शायद पहले से ही बधाई दे सकते हैं। बंदरगाह सीमा के करीब कहीं भी पहुंचने से पहले आप अन्य संसाधनों से अधिक संभावनाएं निकाल सकते हैं (इस तथ्य के आधार पर धारणा है कि ऐसा लगता है कि आप एक एमएमओ गेम बना रहे हैं)। यदि आप वास्तव में उन लोगों के साथ मुद्दों में भाग लेते हैं, तो आप शायद टीसीपी को छोड़ना चाहते हैं और यूडीपी में सबकुछ फिर से लिखना चाहते हैं (या अधिमानतः, यूडीपी के शीर्ष पर कुछ तैयार समाधान)।
एक टाइमर के बारे में जो समय-समय पर सभी सक्रिय ग्राहकों की जांच करता है। डेटा प्राप्त होने पर आपको प्रति ग्राहक अंतिम प्राप्त समय अपडेट करने की आवश्यकता है, और उचित सिंक्रनाइज़ेशन सुनिश्चित करें। –
@AlexFarber शायद। ttl इस के लिए काम करता है? मैं इसके लिए इसका उपयोग कैसे कर सकता हूं? – virtouso
@AlexFarber कृपया मुझे आपको नमूना कोड भेजें। धन्यवाद – virtouso