首页 文章

当应用程序运行后台和锁定屏幕时,iOS4中的SIGPIPE错误

提问于
浏览
1

我在我的应用程序中使用BSD套接字在iphone4(iOS4.1)上发送和接收数据,我的应用程序有三种情况:

  • app正在前台和屏幕锁中运行,没关系 .

  • app在后台运行,屏幕确实't lock, it'也很好(我使用NSStream发送和接收数据,让app在后台运行,它运行正常 . )

  • app在后台和屏幕锁中运行,app运行正常,但当app尝试通过UDP或TCP套接字调用sendto()或send()时,总是会收到SIGPIPE错误 .

我搜索了很多但没有任何用处,从here我知道SIGPIPE是什么,我使用setsockopt(sock,SOL_SOCKET,SO_NOSIGPIPE,(void *)&on,sizeof(int))来避免app异常退出 . 但我仍然不知道为什么这个错误只发生在情况3中,以及如何在这种情况下通过bsd套接字正常发送数据 .


我尝试更新并重新连接但它不起作用,它仍然会收到SIGPIPE错误 . 我认为可能所有BSD套接字都无法在情境3中获得内部访问(据我们所知,BSD套接字无法在iOS中激活wifi或EDGE连接),任何人都可以帮助我或给我一些建议吗?抱歉我的破碎的英语^ . ^,非常感谢 .

1 回答

  • 7

    我在谷歌搜索并在10个月前发现了我自己的问题,这很有趣 . 我已经有一个应用程序保持在后台运行的解决方案,setsockopt(sock,SOL_SOCKET,SO_NOSIGPIPE,(void *)&on,sizeof(int))是有用的,它将忽略Sigpipe 13错误 .

    当套接字已经丢失物理连接并仍尝试通过Wifi,3G或附件写入数据时,会发生此错误 .

相关问题