Asyncsocket: нет локальных или удаленных адресов
Я пытаюсь установить TCP-соединение с локальным сервером, и, поскольку почти все согласны с тем, что Asyncsocket - это то, что нужно, я тоже пошел на это. Тем не менее, я сталкиваюсь с проблемами на самом базовом уровне: экземпляр Asyncsocket не имеет локального или удаленного адреса. У меня не так много кода, но вот что у меня есть:
- (void)viewDidLoad {
[super viewDidLoad];
AsyncSocket *socket = [[AsyncSocket alloc] initWithDelegate:self];
[socket connectToHost:@"www.google.com" onPort:80 error:nil];
}
- (BOOL)onSocketWillConnect:(AsyncSocket *)sock {
NSLog(@"%@", sock);
return YES;
}
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {
NSLog(@"%@", host);
}
В консоли отображается следующее (из NSLog в onSocketWillConnect):
AsyncSocket 0x298de0 локальный, нигде не удаленный, нигде не поставлен в очередь, 0 читает, 0 пишет, нет текущего чтения, нет текущей записи, поток чтения 0x299720 не открыт, поток записи 0x299aa0 не открыт, не подключен
Там, где написано "никуда", конечно, у него должны быть IP-адреса, но это не так. Из онлайн-примеров видно, что мой код в порядке, но я получаю эту "нигде" при работе на двух компьютерах и на моем телефоне, так что я, вероятно, что-то делаю не так. У кого-нибудь есть идея?
Спасибо!
редактировать: для пояснения: если я использую отчеты об ошибках (передавая экземпляр NSError в "connectToHost:onPort:error" и NSLogging that), все, что я получаю, это (null)
,
1 ответ
Вау, это стыдно. Мне нужно было создать ivar для хранения AsyncSocket, потому что без него он выходил за рамки после завершения viewDidLoad, поэтому мой onSocket:didConnectToHost: порт не вызывался.