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: порт не вызывался.

Другие вопросы по тегам