当前位置: 代码迷 >> Iphone >> AsyncSocket类中connecttohost调用有关问题
  详细解决方案

AsyncSocket类中connecttohost调用有关问题

热度:5   发布时间:2016-04-25 06:15:13.0
AsyncSocket类中connecttohost调用问题
如题,在ipad上运行并调试程序,代码如下:

//按下按钮时执行此函数
- (IBAction)connect:(id)sender {
    //[super viewDidLoad];
    
    AsyncSocket *socket1=[[AsyncSocket alloc] initWithDelegate:self];
    BOOL pass = [socket1 connectToHost:@"www.126.com" onPort:80 error:nil];   //即使我断开wifi,connecttohost的返回值也是yes
    if(pass)
    {
        [connectbtn setTitle:@"connected" forState:UIControlStateNormal];
    }
    
    [socket1 readDataWithTimeout:3 tag:1];
    [socket1 writeData:[@"GET / HTTP/1.1\n\n" dataUsingEncoding:NSUTF8StringEncoding] withTimeout:3 tag:1];
}


 BOOL pass = [socket1 connectToHost:@"www.126.com" onPort:80 error:nil];   //即使我断开wifi,connecttohost的返回值也是yes,求高手指点
------最佳解决方案--------------------
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;
}

------其他解决方案--------------------
引用:
connectToHost经常会出现这种情况的,要用delegate 方法解决。

试试这个代码,应该就没问题了:

Objective C code?1234567891011121314151617181920- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:……


谢谢回复,虽然我已经试过了,这样确实可以。不过我在调试时碰到了EXC_BAD_ACCESS这样的错误,可能是因为我用的cocoa asyncsocket类不支持ARC,但是我的程序其他部分却是支持ARC的方式编译和执行的。不知道你那里有没有支持ARC的cocoa asyncsocket版本,google上的那个开源项目可能关了,不知道到哪去找,据说是7.1以上的版本。有的话麻烦发给我一下,我的邮箱是xuwei531120546@126.com
------其他解决方案--------------------
你可以直接通过xcode解决。
xcode 在编译得时候可以选择哪些文件时不使用ARC的,




比如这里用的 ASI库是不支持ARC的。你只要设置了 -fno-objec-arc 就行。

------其他解决方案--------------------
该回复于2012-12-08 14:12:25被管理员删除