如果WLAN连接断开,则iOS App无法在运行时重新建立套接字连接

时间:2018-09-26 12:36:55

标签: ios objective-c sockets

一个前同事给我留下了一个我现在必须维护的iOS项目。该应用程序的任务是通过套接字连接不断获取数据,效果很好。 但是,客户抱怨该应用程序将在某个时候停止传送数据。我怀疑如果设备在短时间内失去WLAN连接,就会发生这种情况。实际上,该应用程序随后应建立一个新连接,不幸的是,该连接不起作用。建立连接的代码如下:

- (void)initSocketConnection
{
    CFReadStreamRef readStreamRef = nil;
    CFWriteStreamRef writeStreamRef = nil;

    CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)CFBridgingRetain(config.host), config.port, &readStreamRef, &writeStreamRef);

    if(CFWriteStreamOpen(writeStreamRef) == true)
    {
        if(CFReadStreamOpen(readStreamRef) == true)
       {
…

我通过禁用设备上的WLAN并等待直到应用程序不再接收任何数据来模拟行为。然后,我再次激活WLAN。发生错误时,将反复调用initSocketConnection方法。但是,调用if(CFWriteStreamOpen(writeStreamRef)== true)时,我得到了BAD_ACCESS代码2。即使尝试了几分钟,错误也不会改变。如果我重新启动该应用程序,它将立即再次获取数据。

可能是什么问题? 似乎该应用无法建立新的连接。 还是我模拟问题的方式错误?

0 个答案:

没有答案