मान लिया जाये कि ...
- आप बाइट्स के एक बफर में परिवर्तित करने के बारे में बात कर रहे हैं
- आप यूडीपी का उपयोग कर रहे हैं और प्रदर्शन एक चिंता का विषय है
संरचना को परिभाषित करने के लिए अपने पैकेट में जगह बर्बाद करने से बचने की कोशिश करें। IE भेजने के लिए, कम से कम, पैकेट के प्रकार को दर्शाने के लिए एक बाइट, फिर मान लें कि प्रत्येक पैकेट उस प्रकार के पैकेट के लिए पूर्वनिर्धारित संरचना का अनुसरण करता है।
क्या मुझे बस सॉकेट में संरचनाएं पढ़नी चाहिए? प्रोटिकॉल बफ़र्स / थ्रिफ्ट का उपयोग करें?
- हां, संपूर्ण संरचना पढ़ें यदि आपने संपूर्ण संरचना की आवश्यकता है
- नहीं, पैकेट संरचना स्वयं बनाएं, यह निश्चित रूप से इन विधियों का उपयोग करके क्रमांकन से छोटा होगा; आपको पता होना चाहिए कि पैकेट में कौन सा डेटा शामिल होना चाहिए
मुझे डेटा के सरणियों का प्रतिनिधित्व कैसे करना चाहिए?
- डेटा के सरणियों के रूप में। प्राप्त करते समय सरणी के तत्वों की गिनती भेजने से बचने के लिए डेटा के अंत तक बफर पढ़ना जारी रखें
डेटा पैक / अनपैक करने के लिए इंटरफ़ेस कैसा दिखना चाहिए?
- आप आसानी से कस्टम प्रकार के रूप में अच्छी तरह से परिवर्तित करने के लिए इन तरीकों पर निर्माण से बुनियादी प्रकार के बाइट्स में परिवर्तित करने के लिए तरीकों का एक गुच्छा सेटअप कर सकते हैं। के बारे में विशिष्ट कैसे यह करने के लिए लगभग कहीं भी मुझे यकीन है कि (मैं व्यक्तिगत रूप से उपयोग करें सी #) पाया जा सकता है
एक आखिरी बात, पैकेट आकार है विशेष रूप से एक स्नैपशॉट के लिए, एक चिंता का विषय: आकार = packetSize एक्स संस्थाओं x connectedPlayers; तो आपके पास प्रति पैकेट 60 x 10 x 16 = 9,600 बाइट्स हो सकते हैं, फिर इस 20 बार एक दूसरे को भेजना: = 192,000 बीपीएस = 187 केबीपीएस। यह स्पष्ट रूप से एक उच्च बैंडवाइट अपलोड गति है। इस प्रकार जहां संभव हो वहां पैकेट आकार में योगदान करने वाले प्रत्येक कारक को कम से कम करने की आवश्यकता है।
इस लेख ने मुझे बहुत मदद की है:
वाल्व मल्टीप्लेयर नेटवर्किंग