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-адреса, но их нет. Из примеров в Интернете видно, что мой код в порядке, но я получаю это «нигде» при работе на двух компьютерах и моем телефоне, поэтому я, вероятно, делаю что-то не так. У кого-нибудь есть идея?

Спасибо!

edit: Для уточнения: если я использую отчеты об ошибках (путем передачи экземпляра NSError в «connectToHost: onPort: error» и NSLogging), все, что я получаю, это (null).


person Scott Berrevoets    schedule 31.05.2012    source источник
comment
Кажется, вам не хватает журналов консоли, которые вы хотели опубликовать (после строки «Следующее…»). Возможно, их съел редактор. В любом случае, будет легче ответить на ваш вопрос, если вы его исправите.   -  person abarnert    schedule 31.05.2012
comment
О, я думаю, редактор удалил его, потому что он был заключен в угловые скобки. Это там сейчас, спасибо.   -  person Scott Berrevoets    schedule 31.05.2012


Ответы (1)


Вау, это неловко. Мне нужно было сделать ivar для хранения AsyncSocket, потому что без него он выходил за рамки после завершения viewDidLoad, поэтому мой onSocket:didConnectToHost:port не вызывался.

person Scott Berrevoets    schedule 01.06.2012