iOS:无法完成套接字错误操作断管

时间:2014-02-20 13:04:33

标签: ios

我每隔一段时间就会从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应用程序停止向套接字发送数据。然后再打开屏幕,插座连接断开/断开管道错误。怎么解决? 我搜索但还没找到解决方案。有人可以请问这个问题可能是什么原因以及如何解决这个问题?

3 个答案:

答案 0 :(得分:7)

您有2个选项。

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

[UIApplication sharedApplication].idleTimerDisabled = YES;

来自文档:

  

重要提示:您应该仅在必要时设置此属性,并且当需要不再存在时,应确保将其重置为NO。大多数应用程序应在闲置计时器结束时让系统关闭屏幕。这包括音频应用程序。通过适当使用音频会话服务,当屏幕关闭时,播放和录制不会中断。应该禁用空闲计时器的唯一应用程序是通过零星的用户交互来映射应用程序,游戏或类似程序。

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

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

  • 播放音频:该应用可以在后台继续播放和/或录制音频。
  • 接收位置更新:随着设备位置的变化,应用可以继续获得回调。
  • 执行有限长度的任务:通用的“无论什么”情况,应用可以在有限的时间内运行任意代码。
  • 流程报刊工具包下载特定于报亭应用,该应用可以在后台下载内容。
  • 提供IP语音(VoIP)服务:该应用可以在后台运行任意代码。当然,Apple限制其使用 您的应用也必须提供VoIP服务。

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

答案 1 :(得分:1)

答案 2 :(得分:0)

您的服务器可能已停止工作或处于停止状态。重新启动服务器并运行应用程序。