如何在 iPhone 应用程序的后台运行 UDP 套接字?
我的 iPhone 应用程序正在使用 AsyncUdpSocket 处理 UDP 套接字。但是,当我的应用程序在 iOS 4.0 中进入后台并返回前台时,出现以下错误:
应用程序“MyAppName”异常退出,并显示信号 13:管道损坏
这是因为当我的应用程序转到后台时,我的套接字已断开连接。
如何避免这种情况并在后台运行 UDP 套接字?
My iPhone application is using AsyncUdpSocket to handle a UDP socket. However, when my application goes into the background in iOS 4.0 and returns to the foreground, I am getting the following error:
Application 'MyAppName' exited abnormally with signal 13: Broken pipe
This is because my sockets are disconnected when my application goes to the background.
How can I avoid this and run UDP sockets in the background?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这与UDP无关。
EPIPE
仅适用于“流”文件描述符 - Unix 管道和 TCP 套接字。我猜你有某种控制 TCP 连接,当你进入后台时,该连接在远程端超时。您需要弄清楚如何使其保持活动状态或在应用程序唤醒时重新连接。
您还可以处理(或忽略)
EPIPE
,请参阅sigaction(2)
,并在从write(2)
< /a>.This is not related to UDP.
EPIPE
only happens for "stream" file descriptors - Unix pipes and TCP sockets.I'm guessing you have some sort of a control TCP connection which times out on the remote end when you go into background. You need to figure out how to keep it alive or re-connect when the app wakes up.
You can also handle (or ignore)
EPIPE
, seesigaction(2)
, and react to it accordingly on return fromwrite(2)
.