某些客户的 iOS TCP 套接字失去连接

标签 ios sockets tcp

我有一个应用程序可以创建 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/

相关文章:

ios - Autoreleasepool 仅在应用程序结束时耗尽?

iphone - 应用程序从后台恢复,NSManagedObject 的 nil 属性

sockets - 关闭套接字和关闭网络流之间的区别(System.Net.Sockets)

sockets - 在 TCP 三向握手之前获取 INADDR_ANY 客户端套接字的源 IP 和端口?

ios - UICollectionView reloadData 在 iOS 7 中无法正常运行

ios - RestKit 路径模式包括 ID

Python:监听两个端口

tcp - 从标准输入读取时,如何按端口过滤 Wireshark?

sockets - 当 FIN-WAIT-2 时间用完时,主动关闭器将进入什么状态?

java - 如何在Java中将整数的字节字符串打印到套接字?