2013-01-16 70 views
2

我有一个应用程序可以创建一个TCP套接字并从不同种类的硬件接收数据。我的大部分客户都是满意的用户,但也有一些人存在TCP连接在一段时间后中断(可能是30秒或5分钟)的问题。某些客户的iOS TCP套接字连接丢失

我正在使用CFStreamCreatePairWithSocketToHost - 方法,并执行“handleEvent”方法中的所有处理。

我已经得到一些客户的故障测井公司,我得到这个事件:“操作无法完成插座不 连接(代码= 57)”

ErrorOccurred

一对夫妇重新连接成功后,当我尝试重新连接我可能会得到这样的事件:

ErrorOccurred“操作无法完成。没有到主机的路由 (代码= 65)”

最简单的解释是,创造了WiFi网络和流数据的设备是坏的,但一些客户也在使用连接到相同的其他应用设备,而这些应用程序不会失去联系。

我想尽办法改变或改善以解决问题。

我检查过可用数据的大小,它永远不会超过1个句子,所以它不像任何缓冲区正在运行。

我其实也有一个小测试应用程序,除了连接到广播设备并记录接收到的数据之外什么都不做,而且也失去了这些客户的连接。

我也尝试使用AsyncSocket来代替,但我有同样的问题。

我的头发变成了灰色...... :-)任何帮助将不胜感激。

+0

其他信息:连接中断代码57(套接字未连接)。通常,应用程序可以在一秒钟内重新连接,但有时重新连接会失败,并显示错误65(无路由到主机)。此错误(65)重复一段时间,然后可能会更改为错误代码22(无效参数)。一段时间后,重新连接尝试更改为错误代码54(由对等方重置连接)。之后,它会混合错误代码22和54并最终以错误代码60结束(操作超时)。之后,重新连接成功。 – user1057831

回答

0

很多测试,记录和猜测终于解决了这个问题。 客户唯一需要做的就是降低波特率,问题就消失了。

案件关闭。