मैं जोड़ी द्वारा प्रयोग बनाने में प्रवेश किया था कनेक्शन (बहुस्त्र्पीय के साथ) TCP और UDP के लिए क्या होता है:जब एक iOS आवेदन पृष्ठभूमि
सेटअप 1: मैं एक टीसीपी भेजने वाले एप्लिकेशन और एक TCP रिसीवर एप्लिकेशन बनाया।
इस प्रयोग के लिए, मैंने एक आईओएस डिवाइस पर टीसीपी प्रेषक और अन्य आईओएस डिवाइस पर टीसीपी रिसीवर शुरू किया। और फिर दोनों कनेक्शन बनाने और डेटा भेजने और प्राप्त करने के लिए सत्यापित हैं। मैं फिर पृष्ठभूमि में टीसीपी रिसीवर ऐप डाल दिया। टीसीपी प्रेषक ऐप ने कनेक्शन खो दिया और दुर्घटनाग्रस्त हो गया (हाँ, मैं उस तरह से इरादा)।
सेटअप 2: मैंने एक यूडीपी प्रेषक ऐप और एक यूडीपी रिसीवर ऐप बनाया है।
उपरोक्त के समान, मैंने आईओएस डिवाइस पर यूडीपी प्रेषक ऐप और अन्य आईओएस डिवाइस पर यूडीपी रिसीवर ऐप शुरू किया। यूडीपी रिसीवर ऐप पर मैंने मल्टीकास्ट समूह की सदस्यता ली, आदि। मैंने सत्यापित किया कि यूडीपी रिसीवर ऐप यूडीपी प्रेषक ऐप द्वारा भेजे गए मल्टीकास्ट समूह से डेटा प्राप्त कर रहा है। मैं फिर यूडीपी रिसीवर ऐप पृष्ठभूमि में डाल दिया। 2 मिनट के बाद, मुझे डेटा का एक और टुकड़ा भेजने के लिए यूडीपी प्रेषक ऐप मिलता है। मैंने फिर यूडीपी प्रेषक ऐप को पूरी तरह से छोड़ दिया और आईओएस डिवाइस बंद कर दिया। मैं फिर 2 मिनट या उससे अधिक के लिए इंतजार करता हूं, और फिर पृष्ठभूमि से यूडीपी रिसीवर ऐप लाता हूं। यूडीपी रिसीवर ऐप को उस डेटा को प्राप्त हुआ जो यूडीपी प्रेषक ऐप द्वारा समाप्त होने से पहले भेजा गया था।
सेटअप 1 में, मेरी व्याख्या इसलिए है क्योंकि टीसीपी एक कनेक्शन उन्मुख है।
सेटअप 2 में, मुझे लगता है कि यूडीपी कनेक्शन रहित है। कोई स्पष्टीकरण क्यों सेटअप 2 ने मेरे अनुभव में रास्ता तय किया? (अभी भी पृष्ठभूमि मोड में भी डेटा प्राप्त करना)
वैसे, मैं मान रहा हूं कि जब आप 'पृष्ठभूमि' कहते हैं तो 'निलंबित' होता है क्योंकि आपने उल्लेख नहीं किया है कि पृष्ठभूमि-सक्षम ऐप (वीओआईपी, संगीत इत्यादि) चलाने की कोशिश कर रहे थे, जब तक आप कुछ नहीं करते विशेष, पृष्ठभूमि आपके ऐप के लिए एक क्षणिक स्थिति है जिसे पृष्ठभूमि में प्रवेश करने के तुरंत बाद निलंबित कर दिया जाता है। ऐप्पल आईओएस ऐप लाइफसाइक्ल डॉक्स देखें। – smparkes
उत्कृष्ट स्पष्टीकरण! मेरी सोच आपकी व्याख्या के साथ इनलाइन थी और वह (+1 अप वोट) तकनीकी लेख बहुत पुष्टि करता है। हाँ, मेरा मतलब पृष्ठभूमि को निलंबित कर दिया गया था। एफवाईआई: कारण मेरा टीसीपी प्रेषक जल्दी से दुर्घटनाग्रस्त हो गया क्योंकि यह लगातार रिसीवर को डेटा स्ट्रीम भेज रहा था। – user523234
यह समझ में आएगा: यदि आप डेटा भेजते हैं कि गंतव्य प्राप्त नहीं होता है और मुख्य थ्रेड पर अवरुद्ध कॉल के साथ ऐसा करता है, तो आईओएस आपके ऐप को जवाब देने और इसे मारने के रूप में नहीं देखेगा। टीसीपी कनेक्शन अभी भी ठीक हो सकता है; बफर प्रबंधित करने के लिए इसका प्रवाह नियंत्रण होता है, लेकिन आपको मुख्य धागे को बहुत लंबे समय तक अवरुद्ध करने की अनुमति नहीं है। – smparkes