【iOS】AsyncSocket的isConnected保险么?

最近也在用Asyncsocket写几个tcp玩玩,没想到早上服务器被我搞崩溃了,似乎是握手的时候不给我回ack+syn,连锁导致我的AsyncSocket抛异常。

本来完全没想到会在connect出问题,我在原来代码里是 这么写的

- (void)connect:(NSString *)ipAddr

{

    if (![self.socket isConnected]) {

        NSError *error;

        [self.socket connectToHost:ipAddr onPort:10001 withTimeout:3 error:&error];

        MY_Log(kDebug_Location, error);

    }

}

就是用isConnected来判下合不合适,结果服务器一出事儿,说有未捕获的异常,异常大意是“尝试在已经connected或者xxx过程上的socket发起connect”。 这个isConnected居然是靠不住的

而且抛异常的时候还没到写error的时候,我那个error也算白加。

现在不得不加了@try,

- (void)connect:(NSString *)ipAddr

{

    if (![self.socket isConnected]) {

        @try {

            NSError *error;

            [self.socket connectToHost:ipAddr onPort:10001 withTimeout:3 error:&error];

        }

        @catch (NSException *exception) {

            [self.socket disconnect];

        }

    }

}

成了这个鬼样子。


你可能感兴趣的:(ios,socket,AsyncSocket)