2010-10-21 11 views
6

मेरा आईफोन एप्लिकेशन यूडीपी सॉकेट को संभालने के लिए AsyncUdpSocket का उपयोग कर रहा है। हालांकि, जब अपने आवेदन आईओएस 4.0 में पृष्ठभूमि में चला जाता है और अग्रभूमि करने के लिए देता है, मैं निम्न त्रुटि हो रही है:मैं आईफोन एप्लिकेशन में पृष्ठभूमि में यूडीपी सॉकेट कैसे चला सकता हूं?

Application 'MyAppName' exited abnormally with signal 13: Broken pipe

इसका कारण यह है मेरी सॉकेट डिस्कनेक्ट हो जाते हैं जब अपने आवेदन पृष्ठभूमि में चला जाता।

मैं इससे कैसे बच सकता हूं और पृष्ठभूमि में यूडीपी सॉकेट चला सकता हूं?

+0

क्या आपका ऐप वीओआईपी या ऑडियो ऐप स्ट्रीमिंग के रूप में पंजीकृत है? वे एकमात्र प्रकार हो सकते हैं जो पृष्ठभूमि में सॉकेट को जीवित रखता है। – hotpaw2

+0

हाँ..मेरी जानकारी.प्लिस्ट के पास ये गुण हैं "ऐप ऑडियो चलाता है, ऐप वॉयस ओवर आईपी सेवाएं प्रदान करता है, स्थान अपडेट के लिए ऐप रजिस्ट्रार" ... –

+0

समस्या तब होती है जब एप्लिकेशन पृष्ठभूमि होता है और फ़ोन लॉक स्थिति में होता है .. –

उत्तर

2

यह यूडीपी से संबंधित नहीं है। EPIPE केवल "स्ट्रीम" फ़ाइल वर्णनकर्ताओं के लिए होता है - यूनिक्स पाइप और टीसीपी सॉकेट।

मुझे लगता है कि आपके पास कुछ प्रकार का नियंत्रण टीसीपी कनेक्शन है जो पृष्ठभूमि में जाने पर रिमोट एंड पर बाहर निकलता है। आपको यह पता लगाने की आवश्यकता है कि ऐप जागने पर इसे जीवित रखने या पुनः कनेक्ट करने के तरीके को कैसे व्यवस्थित किया जाए।

आप EPIPE को भी संभाल सकते हैं (या अनदेखा कर सकते हैं) sigaction(2) देखें, और write(2) से वापसी पर इसके अनुसार प्रतिक्रिया दें।

+0

निम्नलिखित कोड ने मुझे \t \t int noSigPipe = 1 के लिए समस्या हल की है; \t \t अगर (theSocket4) \t \t { \t \t \t setsockopt (CFSocketGetNative (theSocket4), SOL_SOCKET, SO_NOSIGPIPE, और noSigPipe, sizeof (noSigPipe)); \t \t} – Ravi

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