टीसीपी/आईपी स्ट्रीम उन अधिकांश चीजों को नियंत्रित करेगी जिनके बारे में आप चिंतित हैं।
नहीं आप तेजी से जब एक टीसीपी सत्र का उपयोग की तुलना में यह प्राप्त कर सकते हैं सर्वर के लिए कुछ भी नहीं भेजेगा "संभाल सकते हैं तेजी से सर्वर से अनुरोध भेजा जा रहा"। ट्रांसमिशन प्रवाह को निर्देशित किया जा सकता है और सर्वर से संभाल सकता है जितना तेज़ भेजना असंभव है।
दो कतार टीसीपी/आईपी संचार, एक भेजें बफर और एक बफर प्राप्त में envolved बफ़र्स हैं "नेटवर्क बफर क्या है"।
जब आप send()
कॉल करते हैं, तो यह वास्तव में कुछ भी नहीं भेजता है, यह केवल प्रेषण बफर में डेटा कतार देगा, और आपको वापस लौटाएगा कि आप कितने बाइट भेजने की कोशिश कर रहे थे वास्तव में भेजने के लिए कतार। यदि आप इसे भेजने की कोशिश कर रहे थे उससे कम लौटते हैं, तो इसका मतलब है कि बाकी को भेजने से पहले आपको इंतजार करना होगा क्योंकि बफर भरा हुआ है।
इस प्रकार आप यातायात को नियंत्रित करते हैं, यह जानना आपका क्यू है कि क्या आप सामान को तेजी से भेजने की कोशिश कर रहे हैं। जब तक आपके पास डेटा भेजने के लिए बफर पूर्ण रखने की कोशिश करें, लेकिन इस तथ्य को अनदेखा न करें कि सब कुछ बफर में फिट नहीं होगा और आपको बाद में पुनः प्रयास करना होगा।
recv()
का अपना बफर भी है। यह आदेश वास्तव में कुछ भी प्राप्त नहीं करना है, डेटा पहले ही प्राप्त हो चुका है, recv()
केवल इसे प्राप्त बफर से पढ़ेगा। अवरुद्ध सॉकेट (डिफ़ॉल्ट) का उपयोग करते समय, recv()
बफर खाली होने पर लटका होगा, नए डेटा आने की प्रतीक्षा कर रहा है। recv()
कनेक्शन को समाप्त कर दिया गया था या यदि आप इसे गैर-अवरुद्ध सॉकेट के साथ उपयोग करने का प्रयास करते हैं तो केवल 0 लौटाएंगे।
यदि आप recv()
भूल जाते हैं और प्राप्त बफर पूर्ण हो जाता है, तो यह भी ठीक है। सहकर्मी भेजने जारी रखने में असमर्थ रहेगा, क्योंकि send()
उनके लिए 0 वापस करना शुरू कर देगा, लेकिन जब तक आप send()
पर वापस लौटेंगे तो वापसी मूल्य किसी भी समय कोई डेटा खो नहीं जाता है।
जहां तक मुझे पता है, बफर आकार डिफ़ॉल्ट रूप से सभी सिस्टम में 64 केबी है, दोनों भेजने या प्राप्त करने के लिए। इस बफर आकार को समायोजित करने के लिए कमांड हैं, लेकिन इसमें गड़बड़ करना दिलचस्प नहीं है। यदि आपको एक बड़ा बफर चाहिए, तो इसे अपने आवेदन में बनाएं।
इसके बिल्कुल एक वैध सवाल "क्या विकल्प प्रदर्शन में सुधार करने अगर हम ग्राहक अंत में कर रहे हैं और जिस तरह से सर्वर पर कोई नियंत्रण नहीं कर रहे हैं", आप ऐसा नहीं कर सकते। मुझे लगता है कि आप HTTP अनुरोधों के साथ कुछ गलती कर रहे हैं, विशेष रूप से आप POST अनुरोध कर रहे हैं पर विचार कर रहे हैं।
POST अनुरोध करते समय, आपके HTTP शीर्षलेख में दो शीर्षलेख होंगे जो आमतौर पर केवल सर्वर HTTP प्रतिक्रिया शीर्षलेखों पर दिखाई देते हैं: सामग्री-प्रकार और सामग्री-लंबाई। POST करते समय वे बहुत महत्वपूर्ण होते हैं, और यदि उनमें से कोई गुम या गलत है, तो HTTP सत्र कुछ सेकंड के लिए लटका सकता है या बिल्कुल सफल नहीं हो सकता है।
HTTP का एक और महत्वपूर्ण पहलू HTTP 1.0 और HTTP 1.1 के बीच सबसे आवश्यक अंतर है: HTTP 1.0 Keep-Alive का समर्थन नहीं करता है। शुरुआत के लिए HTTP 1.0 से निपटना आसान है, क्योंकि HTTP 1.0 के साथ, आप कनेक्ट करते हैं, अपना अनुरोध भेजते हैं, सर्वर उत्तर देते हैं और कनेक्शन समाप्त हो जाता है, जिसका अर्थ है कि आपने सर्वर प्रतिक्रिया डाउनलोड करना समाप्त कर दिया है। HTTP 1.1 के साथ यह डिफ़ॉल्ट रूप से नहीं होगा। कनेक्शन समाप्त होने तक खुला रहता है। यह जानने के लिए कि सर्वर ने आपके द्वारा अनुरोधित सामग्री भेजने का निष्कर्ष निकाला है, आपको HTTP प्रतिक्रिया शीर्षलेख सामग्री-लंबाई और बाइट्स गिनती पर ध्यान देना होगा।
यह भी देखना महत्वपूर्ण है कि सभी सर्वर HTTP 1.0 का समर्थन नहीं करते हैं। आप एक HTTP 1.0 अनुरोध कर सकते हैं, लेकिन यह वैसे भी 1.1 के साथ जवाब देगा, Keep-Alives और उन सभी चीजों के साथ जो आप उम्मीद नहीं कर रहे थे। एक परिपूर्ण दुनिया पर यह नहीं होना चाहिए, लेकिन यह करता है।
आपकी गलती इस क्षेत्र में हो सकती है। सिन्स ने कहा कि आपका अनुरोध बिल्कुल 60 सेकंड ले रहा है, मुझे संदेह है कि इसका समय समाप्त हो गया है। आपको शायद पहले से ही वह सबकुछ प्राप्त हुआ है, लेकिन एप्लिकेशन ठीक से संभाला नहीं जा रहा है और सर्वर द्वारा कनेक्शन समाप्त होने तक लटकने से।
क्या चोर उपयोग करने का प्रयास 60 सेकेंड का सिस्ट, क्या यह थ्रूपुट है? – TalentTuner
फिडलर (http://www.fiddler2.com/fiddler2/) आपका मित्र है .. इसे डाउनलोड करें और इसे फायर करें, यह आपको HTTP समय के आंकड़े प्रदान करेगा जो आपको समस्या का निदान बेहतर करने की अनुमति देगा – Liam
यह समय अंतर है सर्वर से अनुरोध भेजने और सर्वर से प्रतिक्रिया प्राप्त करने के बीच – funsukvangdu