2011-03-25 9 views
5

मैं जावा में एक मल्टीप्लेयर प्रोजेक्ट पर काम कर रहा हूं और मैं परिशोधित करने की कोशिश कर रहा हूं कि मैं अपने विलंब माप परिणामों को कैसे एकत्र करता हूं।मापने विलंबता

मेरा वर्तमान सेटअप नियमित अंतराल पर यूडीपी पैकेट का बैच भेजना है जो सर्वर द्वारा टाइमस्टैम्प प्राप्त करता है और लौटाता है, तो विलंबता की गणना और रिकॉर्ड किया जाता है। मैं नमूनों की संख्या लेता हूं और विलंबता प्राप्त करने के लिए औसत का उपयोग करता हूं।

क्या यह क्लाइंट पक्ष पर विलंबता को काम करने के लिए उचित समाधान की तरह प्रतीत होता है?

+0

मुझे लगता है कि आपका सभी संचार यूडीपी का उपयोग करके किया जाता है। – biziclop

+0

दरअसल, यह सही है। – TechyAdam

उत्तर

3

आप अपने गेम प्रोटोकॉल में उपयोग किए गए पैकेट को टाइमस्टैम्प भी कर सकते हैं। तो आपके आंकड़ों को एकीकृत करने के लिए आपके पास अधिक डेटा होगा। (यह विधि डेटा के अतिरिक्त विस्फोट के कारण ओवरहेड से बचने के लिए भी उपयोगी है। आपने केवल डेटा का उपयोग किया है जो आप पहले से ही अपने आंकड़े करने के लिए आदान-प्रदान कर रहे हैं)

आप अन्य मेट्रिक्स (उदाहरण के लिए भिन्नता) का उपयोग करना शुरू कर सकते हैं अपनी कनेक्शन गुणवत्ता का एक और सटीक अनुमान लगाने के लिए आदेश।

+0

हाय 0verbose, मुझे यह विचार पसंद है, लेकिन मुझे लगता है कि समस्या यह होगी कि प्रत्येक पैकेट को मुझे लगता है यातायात को दोगुनी करने के प्रतिक्रिया प्रकार की आवश्यकता होगी? – TechyAdam

+0

@TechyAdam: आपके द्वारा एकत्र किए जाने वाले अधिक "टाइमस्टैम्प", आपके आंकड़े अधिक सटीक हैं। बेशक आंकड़ों को इकट्ठा करने के लिए बहुत सारे अप्रयुक्त पैकेट भेजना एक अच्छा विचार नहीं है। हां, निश्चित रूप से एक पैकेट को तत्काल प्रतिक्रिया की आवश्यकता होगी। वैसे भी यह क्लाइंट को वापस भेजा गया एक एक पैकेट हो सकता है, जिसमें एक छोटा आयाम होता है जिसमें केवल टाइमस्टैम्प होता है, एक पैकेट अनुक्रम संख्या और उसके जैसे कुछ डेटा। – Heisenbug

+0

@TechyAdam: लेकिन आपके जवाब में मैंने सोचा था कि आप क्लाइंट को पहले से ही कुछ प्रकार के यूडीपी एएके डेटाग्राम भेज रहे थे, क्योंकि यूडीपी विश्वसनीय नहीं है और इसलिए आपको यह सुनिश्चित करने के लिए कम से कम कुछ एके की आवश्यकता है कि गंतव्य तक पहुंचने से पहले भेजे गए पैकेट । – Heisenbug

15

मेरे पास क्लाइंट टाइमस्टैम्प आउटगोइंग पैकेट होगा, और प्रतिक्रिया मूल टाइमस्टैम्प को सुरक्षित रखेगी। इस तरह आप रूटट्रिप विलंबता की गणना कर सकते हैं जबकि सर्वर और क्लाइंट घड़ियों के कारण किसी भी समस्या को साइड-स्टेपिंग करना सिंक्रनाइज़ नहीं किया जा रहा है।

+1

धन्यवाद। समय सिंक्रनाइज़ेशन बिल्कुल मेरी समस्या थी। मेरे दो विंडोज़ ओएस घड़ियों को इंटरनेट घड़ी के साथ सिंक्रनाइज़ किया गया था, लेकिन किसी कारण से वे अभी भी लगभग 3 सेकंड तक बंद हैं इसलिए मुझे वास्तव में एक रास्ता विलंबता नहीं मिल सका। आपका रास्ता आकर्षण की तरह काम करता है। –

0

यदि आपने अभी तक अपनी परियोजना शुरू नहीं की है, तो KryoNet जैसे नेटवर्किंग ढांचे का उपयोग करने पर विचार करें, जिसमें आरएमआई और कुशल क्रमबद्धता है और जो स्वचालित रूप से यूडीपी का उपयोग कर पिंग अनुरोध भेज देगा। आप आसानी से पिंग समय मान प्राप्त कर सकते हैं।

0

यदि आप राउंडट्रिप विलंबता को माप रहे हैं, घड़ी की बहाव जैसे कारक, एचडब्ल्यू घड़ी और ओएस एपीआई की परिशुद्धता आपके माप को प्रभावित करेगी। हार्डवेयर पर पैसे खर्च किए बिना आप जो निकटतम प्राप्त कर सकते हैं वह आरडीटीएससी निर्देशों का उपयोग कर है। लेकिन आरडीटीएससी अपनी समस्याओं के बिना नहीं जाता है, आपको सावधान रहना होगा कि आप इसे कैसे कॉल करते हैं।

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