2010-10-21 33 views
6

Ứng dụng iPhone của tôi đang sử dụng AsyncUdpSocket để xử lý ổ cắm UDP. Tuy nhiên, khi ứng dụng của tôi đi vào nền trong iOS 4.0 và quay trở lại phía sau, tôi nhận được lỗi sau:Làm thế nào tôi có thể chạy ổ cắm UDP trong nền trong ứng dụng iPhone?

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

Điều này là do ổ cắm của tôi đang bị ngắt kết nối khi ứng dụng của tôi đi vào nền.

Làm cách nào để tránh điều này và chạy ổ cắm UDP trong nền?

+0

Ứng dụng của bạn có được đăng ký dưới dạng VOIP hoặc ứng dụng âm thanh trực tuyến không? Đó có thể là những loại duy nhất giữ ổ cắm ở chế độ nền. – hotpaw2

+0

Có..My.plist của tôi có các thuộc tính này "Ứng dụng phát âm thanh, Ứng dụng cung cấp dịch vụ Voice over IP, ứng dụng đăng ký cập nhật vị trí" ... –

+0

Sự cố khi ứng dụng ở chế độ nền và điện thoại ở trạng thái bị khóa. –

Trả lời

2

Điều này không liên quan đến UDP. EPIPE chỉ xảy ra đối với các mô tả tệp "luồng" - các đường ống Unix và các cổng TCP.

Tôi đoán bạn có một số loại kết nối TCP điều khiển mà thời gian ra trên đầu từ xa khi bạn đi vào nền. Bạn cần phải tìm ra cách giữ cho nó sống động hoặc tái kết nối khi ứng dụng tỉnh dậy.

Bạn cũng có thể xử lý (hoặc bỏ qua) EPIPE, xem sigaction(2) và phản ứng lại theo đó khi trả lại từ write(2).

+0

Mã sau đã giải quyết vấn đề cho tôi \t \t int noSigPipe = 1; \t \t if (theSocket4) \t \t { \t \t \t setsockopt (CFSocketGetNative (theSocket4), SOL_SOCKET, SO_NOSIGPIPE, & noSigPipe, sizeof (noSigPipe)); \t \t} – Ravi

Các vấn đề liên quan