2011-12-28 13 views
6

IdTCPServer या IdTCPClient का उपयोग कर वर्तमान बैंडविड्थ गति कैसे प्राप्त करें?वर्तमान बैंडविड्थ (डाउनलोड) गति कैसे प्राप्त करें?

मैं जानना चाहता हूं कि सर्वर से डेटा कितनी तेजी से डेटा डाउनलोड कर रहा है?

उदा .: डाउनलोड कर रहा है गति: 450 केबीपीएस OnWorkBegin, OnWork को

+3

कृपया टैग जानकारी को अपने प्रश्न के शीर्षक में न रखें। यह टैग को पहले स्थान पर रखने के उद्देश्य को हरा देता है, और प्रश्न विषय को पढ़ने के लिए लंबा और कठिन बनाता है। साथ ही, जब आप इंडी जैसे कुछ का उपयोग कर रहे हैं, जहां संस्करणों के बीच प्रमुख अंतर हैं, तो यह आपके द्वारा उपयोग किए जा रहे घटकों के संस्करण को शामिल करने में सहायता करता है। धन्यवाद। –

उत्तर

9

असाइन संचालकों, और कनेक्शन के TIdTCPConnection वस्तु की OnWorkEnd घटनाओं। OnWorkBegin ईवेंट में AWorkCountMax पैरामीटर है जो आपको कुल अपेक्षित बाइट्स ट्रांसफर (यदि समय से पहले ज्ञात है) देता है। OnWork ईवेंट में AWorkCount पैरामीटर है जो आपको OnWorkBegin ईवेंट निकाल दिया गया था, इसलिए आपको वास्तव में कितने बाइट्स स्थानांतरित कर दिए गए हैं, इसकी कुल संख्या देता है।

जब भी OnWork घटना निकाल दिया जाता है, वर्तमान AWorkCount मूल्य से पिछले AWorkCount मूल्य घटाना निर्धारित करने के लिए कितने बाइट्स दो घटनाओं के बीच स्थानांतरित कर दिया गया, और फिर समय की राशि है कि दोनों के बीच बीत जाने से है कि मूल्य को विभाजित आयोजन। उस अंतिम मूल्य के साथ, आप आवश्यकतानुसार बी/सेक, केबी/सेक, एमबी/सेक आदि की गणना कर सकते हैं।

आप कैसे वास्तव में भेज रहे हैं/अपने डेटा प्राप्त करने पर निर्भर करता है, तो आप मैन्युअल OnWork... घटनाओं पाने के लिए फायरिंग शुरू करने के लिए TIdTCPConnection की BeginWork() और EndWork() तरीकों कॉल करने के लिए हो सकता है। इंडी के अधिकांश पढ़ने/लिखने के तरीके आंतरिक रूप से Begin/EndWork() पर कॉल नहीं करते हैं।

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