读书人

AsyncSocket类中connecttohost调用有关

发布时间: 2012-12-21 12:03:49 作者: rapoo

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被管理员删除

读书人网 >Iphone

热点推荐