繁体   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