connectToHost经常会出现这种情况的,要用delegate 方法解决。试试这个代码,应该就没问题了:- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {
    NSLog(@"Connected To %@:%i.", host, port);
}- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err {
    NSLog(@"Disconnecting. Error: %@", [err localizedDescription]);
}- (void)onSocketDidDisconnect:(AsyncSocket *)sock {
    NSLog(@"Disconnected.");    [socket setDelegate:nil];
    [socket release];
    socket = nil;
}- (BOOL)onSocketWillConnect:(AsyncSocket *)sock {
    NSLog(@"onSocketWillConnect:");
    return YES;
}

解决方案 »

  1.   


    谢谢回复,虽然我已经试过了,这样确实可以。不过我在调试时碰到了EXC_BAD_ACCESS这样的错误,可能是因为我用的cocoa asyncsocket类不支持ARC,但是我的程序其他部分却是支持ARC的方式编译和执行的。不知道你那里有没有支持ARC的cocoa asyncsocket版本,google上的那个开源项目可能关了,不知道到哪去找,据说是7.1以上的版本。有的话麻烦发给我一下,
      

  2.   

    你可以直接通过xcode解决。
    xcode 在编译得时候可以选择哪些文件时不使用ARC的,
    比如这里用的 ASI库是不支持ARC的。你只要设置了 -fno-objec-arc 就行。
      

  3.   

    没看懂,怎么做的2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {
        NSLog(@"Connected To %@:%i.", host, port);
    }
     
    - (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err {
        NSLog(@"Disconnecting. Error: %@", [err localizedDescription]);
    }
     
    - (void)onSocketDidDisconnect:(AsyncSocket *)sock {
        NSLog(@"Disconnected.");
     
        [socket setDelegate:nil];
        [socket release];
        socket = nil;
    }
     
    - (BOOL)onSocketWillConnect:(AsyncSocket *)sock {
        NSLog(@"onSocketWillConnect:");
        return YES;
    }