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;
}
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;
}
谢谢回复,虽然我已经试过了,这样确实可以。不过我在调试时碰到了EXC_BAD_ACCESS这样的错误,可能是因为我用的cocoa asyncsocket类不支持ARC,但是我的程序其他部分却是支持ARC的方式编译和执行的。不知道你那里有没有支持ARC的cocoa asyncsocket版本,google上的那个开源项目可能关了,不知道到哪去找,据说是7.1以上的版本。有的话麻烦发给我一下,
xcode 在编译得时候可以选择哪些文件时不使用ARC的,
比如这里用的 ASI库是不支持ARC的。你只要设置了 -fno-objec-arc 就行。
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;
}