मेरे पास यूडीपी के बारे में एक प्रश्न है। संदर्भ के लिए, मैं एक रियल-टाइम एक्शन गेम पर काम कर रहा हूं।
मैंने यूडीपी और टीसीपी के बीच के अंतरों के बारे में काफी कुछ पढ़ा है और मुझे लगता है कि मैं उन्हें काफी अच्छी तरह से समझता हूं, लेकिन एक ऐसा टुकड़ा है जो कभी सही नहीं लगा, और वह है विश्वसनीयता और विशेष रूप से स्वीकार्यता । मैं समझता हूं कि UDP डिफ़ॉल्ट रूप से कोई विश्वसनीयता प्रदान नहीं करता है (यानी पैकेट गिराए जा सकते हैं या ऑर्डर से बाहर आ सकते हैं)। जब कुछ विश्वसनीयता की आवश्यकता होती है, तो मैंने जो समाधान देखा है (जो वैचारिक रूप से समझ में आता है) पावती का उपयोग करना है (अर्थात सर्वर ग्राहक को एक पैकेट भेजता है, और जब ग्राहक उस संदेश को प्राप्त करता है, तो यह सर्वर को एक पावती भेजता है) ।
पावती गिराए जाने पर क्या होता है?
ऊपर दिए गए उदाहरण में (एक क्लाइंट को एक पैकेट भेजने वाला सर्वर), सर्वर उन पैकेटों के लिए पावती मिलने तक हर फ्रेम को फिर से पैकेट भेजकर संभावित पैकेट लॉस को हैंडल करता है। आप अभी भी बैंडविड्थ या आउट-ऑफ-ऑर्डर संदेशों के मुद्दों में भाग सकते हैं, लेकिन विशुद्ध रूप से एक पैकेट-नुकसान के परिप्रेक्ष्य से, सर्वर को कवर किया गया है।
हालाँकि, यदि ग्राहक एक पावती भेजता है जो कभी नहीं आती है, तो सर्वर के पास उस संदेश को भेजने से रोकने के अलावा कोई विकल्प नहीं होगा, जो कि उस पैकेट में मौजूद जानकारी की आवश्यकता होने पर खेल को तोड़ सकता है। आप सर्वर के लिए एक समान दृष्टिकोण ले सकते हैं (यानी जब तक आप एक बिल्ली के लिए एक बिल्ली प्राप्त नहीं करते हैं तब तक पावती भेजते रहें;), लेकिन उस दृष्टिकोण से आपको आगे और पीछे हमेशा के लिए लूपिंग मिलेगी (क्योंकि आपको बिल्ली के लिए एक बिल्ली की आवश्यकता होगी। और इसी तरह)।
मुझे लगता है कि मेरा मूल तर्क यहीं है, जो मुझे दो विकल्पों के साथ छोड़ देता है।
- एकल पावती पैकेट भेजें और सर्वश्रेष्ठ के लिए आशा करें।
- मुट्ठी भर पावती पैकेट (शायद 3-4) भेजें और सबसे अच्छे के लिए आशा करें, यह मानते हुए कि उन सभी को नहीं छोड़ा जाएगा।
क्या इस समस्या का कोई जवाब है? क्या मैं मौलिक रूप से कुछ गलत समझ रहा हूं? क्या यूडीपी के उपयोग की कुछ गारंटी है जिसकी मुझे जानकारी नहीं है? मैं बहुत अधिक नेटवर्किंग कोड के साथ आगे बढ़ने में झिझक महसूस करता हूं जब तक कि मैं सहज महसूस नहीं करता कि मेरा तर्क ध्वनि है।