最近也在用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];
}
}
}
成了这个鬼样子。