我有一个应用程序可以创建 TCP 套接字并从不同类型的硬件接收数据。我的大多数客户都很满意,但有些人会遇到 TCP 连接在一段时间后(可能是 30 秒或 5 分钟)中断的问题。
我正在使用 CFStreamCreatePairWithSocketToHost 方法,并在“handleEvent”方法中进行所有处理。
我有一些失败的客户记录,我得到了这个事件:
ErrorOccurred "The operation couldn’t be completed. Socket is not connected (Code = 57)"
在几次成功重新连接后,我可能会在尝试重新连接时收到此事件:
ErrorOccurred "The operation couldn’t be completed. No route to host (Code = 65)"
简单的解释是,他们创建 WiFi 网络和流式传输数据的设备出现问题,但一些客户还在使用连接到相同设备的其他应用,并且这些应用不会断开连接。
我想不出要改变或改进什么来解决问题。
我已经检查过可用数据的大小,而且它从不超过 1 个句子,所以没有任何缓冲区运行满。
实际上,我还有一个小型测试应用程序,它除了连接到广播设备并记录接收到的数据外什么都不做,而且还会断开这些客户的连接。
我也尝试使用 AsyncSocket
来代替,但我遇到了同样的问题。
我的头发都变白了...:-) 任何帮助将不胜感激。
最佳答案
大量的测试、记录和推测终于解决了这个问题。 客户唯一需要做的就是降低波特率,问题就消失了。
结案。
关于某些客户的 iOS TCP 套接字失去连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368105/