簡體   English   中英

應用運行后台和鎖屏時,iOS4中的SIGPIPE錯誤

[英]SIGPIPE error in iOS4 when app is running background and lock screen

我在應用程序中使用BSD套接字在iphone4(iOS4.1)上發送和接收數據,我的應用程序中存在三種情況:

  1. 應用程序在前景和屏幕鎖定中運行,可以。
  2. 應用程序在后台運行並且屏幕沒有鎖定,這也很好(我使用NSStream發送和接收數據以使應用程序在后台保持活動狀態,它可以正常工作。)
  3. 應用程序在后台和屏幕鎖定中運行,應用程序運行良好,但是當應用程序嘗試通過UDP或TCP套接字調用sendto()或send()時,始終會收到SIGPIPE錯誤。

我搜索了很多東西,但沒有任何用處,從這里我知道SIGPIPE是什么,並且我使用setsockopt(sock,SOL_SOCKET,SO_NOSIGPIPE,(void *)&on,sizeof(int))來避免應用程序異常退出。 但我仍然不知道為什么僅在情況3中會發生此錯誤,以及在這種情況下如何通過bsd套接字正常發送數據。


我嘗試續訂並重新連接,但是它不起作用,仍然出現SIGPIPE錯誤。 我認為可能情況3中的所有BSD插槽都無法獲得內部訪問權限(據我們所知,BSD插槽無法在iOS中激活wifi或EDGE連接),任何人都可以幫我或提供一些建議嗎? 對不起,我的英語不好。^,非常感謝。

我在Google上搜索並在10個月前發現了自己的問題,這很有趣。 我已經有一個解決方案,可以讓應用程序在后台繼續運行,並且setsockopt(sock,SOL_SOCKET,SO_NOSIGPIPE,(void *)&on,sizeof(int))很有用,它將忽略Sigpipe 13錯誤。

當套接字已經失去物理連接並仍嘗試通過Wifi,3G或附件寫入數據時,會發生此錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM