2010-10-21 12 views
6

iPhone uygulamam UDP soketini kullanmak için AsyncUdpSocket kullanıyor. Başvurum iOS 4.0 arka gider ve ön döner Ancak, aşağıdaki hatayı alıyorum: my uygulama arka gittiğinde benim prizler kesilir çünküiPhone uygulamasında arka planda UDP yuvalarını nasıl çalıştırabilirim?

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

budur.

Bunu nasıl önleyebilirim ve arka planda UDP soketleri çalıştırabilir miyim?

+0

Uygulamanız bir VOIP veya akışlı ses uygulaması olarak kayıtlı mı? Bunlar soketi arka planda tutan tek tip olabilir. – hotpaw2

+0

Evet..Bu info.plist şu özelliklere sahiptir: "App ses yürütür, App IP üzerinden Ses hizmetleri sağlar, Konum güncellemeleri için Uygulama kaydeder" ... –

+0

Uygulama arka plan olduğunda ve telefon kilitli durumda ise sorun .. –

cevap

2

Bu, UDP ile ilgili değildir. EPIPE sadece "stream" dosya tanımlayıcıları için - Unix boruları ve TCP soketleri için olur.

Sanırım arka plana gittiğinizde uzak uçta zaman aşımına uğrayan bir denetim TCP bağlantınızın olması. Uygulama uyanınca onu canlı tutmayı veya tekrar bağlanmayı öğrenmelisiniz.

Ayrıca kolu (veya yok say) EPIPE, sigaction(2) bkz ve buna uygun olarak write(2) dönüşünde buna tepki.

+0

Aşağıdaki kod benim için sorunu çözdü \t \t int noSigPipe = 1; \t \t halinde (theSocket4) \t \t { \t \t \t Setsockopt (CFSocketGetNative (theSocket4), SOL_SOCKET, SO_NOSIGPIPE, ve noSigPipe, boyutu (noSigPipe)); \t \t} – Ravi