gpt4 book ai didi

iOS:无法完成套接字错误操作 Broken pipe

转载 作者:可可西里 更新时间:2023-11-01 03:46:10 27 4
gpt4 key购买 nike

我每隔一段时间从 iOS 应用程序发送一些数据(图像字节)到套接字服务器(java-desktop)。它正确发送数据。我看到一个奇怪的问题,如果 iOS 设备屏幕在从 iOS 应用程序发送数据时熄灭,然后如果我在设备上进行屏幕显示,那么我会收到以下错误并且应用程序已与套接字断开连接,或者有时它会使应用程序崩溃:

Error writing to stream <__NSCFOutputStream: 0x1f5dd120>: Error Domain=NSPOSIXErrorDomain Code=32 "The operation couldn’t be completed. Broken pipe"
Stream space : 0
NSStreamEventErrorOccurred - Can not connect to the host

当设备屏幕关闭时,我的 iOS 应用程序停止向套接字发送数据。然后重新打开屏幕,套接字连接断开/管道损坏错误。如何解决?我搜索但找不到解决方案。有人可以告诉我这个问题的原因是什么以及如何解决这个问题吗?

最佳答案

您有 2 个选择。

<强>1。禁用空闲计时器:此代码将防止您的 iPhone 在您的应用程序运行时进入休眠状态。我不确定这是否会阻止设备锁定,但您可以使用 UIApplication 的 idleTimerDisabled 属性防止屏幕变暗。

[UIApplication sharedApplication].idleTimerDisabled = YES;

来自文档:

Important: You should set this property only if necessary and should be sure to reset it to NO when the need no longer exists. Most applications should let the system turn off the screen when the idle timer elapses. This includes audio applications. With appropriate use of Audio Session Services, playback and recording proceed uninterrupted when the screen turns off. The only applications that should disable the idle timer are mapping applications, games, or similar programs with sporadic user interaction.

<强>2。制作具有后台支持的应用程序:您可以在 Background Modes in iOS 上关注本教程.

以下是 iOS 中可用的五种基本背景模式的快速概述:

  • 播放音频:应用可以在后台继续播放和/或录制音频。
  • 接收位置更新:应用可以在设备位置发生变化时继续接收回调。
  • 执行有限长度的任务:通用的“任意”情况,在这种情况下,应用可以在有限的时间内运行任意代码。
  • 处理 Newsstand Kit 下载:特定于 Newsstand 应用,该应用可以在后台下载内容。
  • 提供 IP 语音 (VoIP) 服务:该应用可以在后台运行任意代码。当然,Apple 限制了它的使用您的应用也必须提供 VoIP 服务。

VOIP 后台模式允许您的应用程序在后台运行任意代码。此模式优于“Whatever”API,因为您可以无限期地运行代码。更好的是,如果应用程序崩溃或用户重启手机,应用程序会在后台自动启动。有兴趣可以关注Tips for Developing a VoIP App由苹果提供。 您的应用需要为用户提供某种 VoIP 功能,否则 Apple 将拒绝您的应用。

关于iOS:无法完成套接字错误操作 Broken pipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com