2010-04-19 42 views
11

वर्तमान में मैं एक ऐसे एप्लिकेशन पर काम कर रहा हूं जो दूरस्थ सर्वर से फ़ाइल भेजता है और प्राप्त करता है। नेटवर्क ऑपरेशन करने के लिए मैं QNetworkAccessManager का उपयोग कर रहा हूं।QNetworkAccessManager टाइमआउट

फ़ाइल अपलोड करने के लिए मैं QNetworkAccessManager :: put() का उपयोग कर रहा हूं और डाउनलोड करने के लिए मैं QNetworkAccessManager :: get() फ़ंक्शंस का उपयोग कर रहा हूं।

फ़ाइल अपलोड करते समय मैं 15 सेकंड के समय के साथ एक टाइमर शुरू करूंगा। अगर मैं एक छोटी फाइल अपलोड करता हूं तो यह समय अवधि के भीतर इसे पूरा करेगा। लेकिन अगर मैं एक फ़ाइल अपलोड करने का प्रयास करता हूं जो कि आकार में बहुत बड़ा है, तो समय निकाला जा सकता है। तो बड़ी फाइल अपलोड करने के लिए समय निकालने का तरीका कैसे तय करें।

एक बड़ी फ़ाइल डाउनलोड करने के मामले में ही। मैं तैयार() सिग्नल में खंड द्वारा खंड में फ़ाइल प्राप्त करता हूं। यहां भी अगर मैं एक बड़ी फाइल डाउनलोड करता हूं तो मुझे समय मिल जाता है। तो बड़ी फाइल अपलोड करने के लिए समय निकालने का तरीका कैसे तय करें।

उत्तर

17

QNetworkReply::uploadProgress() (या downloadProgress) का उपयोग करें ताकि आपको सतर्क किया जा सके कि ऑपरेशन प्रगति कर रहा है। फिर, अंतिम uploadProgress/downloadProgress अधिसूचना के बाद 15 सेकंड के लिए टाइमर सेट करें (डाउनलोड/अपलोड शुरू होने पर टाइमर शुरू होने के साथ।) यदि डाउनलोड कभी भी बंद हो जाता है, तो आप अंतिम अपडेट के 15 सेकंड बाद ऑपरेशन को रद्द कर सकते हैं।

+0

डाउनलोड ऑपरेशन को कैसे रद्द करें और httpFinished() को उत्सर्जित करने के लिए QNetworkReply बनाएं? – Temak

+1

@Temak 'answer-> abort() 'और' emit answer-> समाप्त() ' – vladon

+1

फ्रेमवर्क आईएमओ द्वारा कार्यान्वित किया जाना चाहिए ... – Kolyunya

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