asyncsocket "connectToHost" всегда завершается успешно и никогда не возвращает ошибку - PullRequest
2 голосов
/ 07 апреля 2011

Я создаю сокет-соединение с целью C, используя asyncsocket.Я делаю это, используя метод "connectToHost".Я пытаюсь обработать случай, когда соединение сокета не удается.«connectToHost» должен возвращать «YES» при успешном подключении, и «NO» в противном случае.По некоторым причинам, это всегда возвращает да.Я даже предоставил пустую строку в качестве хоста, и он все еще возвращает да.Есть мысли?

Спасибо,

Робин

BOOL connectStatus = NO; //used to check if connection attempt succeeded
testSocket = [[AsyncSocket alloc] initWithDelegate: self];
connectStatus = [testSocket connectToHost: @"" onPort: 5000 error: nil];

if(connectStatus == NO)
{
    NSLog(@"Failed to connect to socket ");

}

else {
    NSLog(@"Connected to socket sucessfully, connectStatus = %d", connectStatus);
}

1 Ответ

6 голосов
/ 07 апреля 2011

За заголовочный файл :

// Once one of the accept or connect methods are called, the AsyncSocket instance is locked in
// and the other accept/connect methods can't be called without disconnecting the socket first.
// If the attempt fails or times out, these methods either return NO or
// call "onSocket:willDisconnectWithError:" and "onSockedDidDisconnect:".

Если вы отметите источник - из-за любви ко всему святому, при работе с программным обеспечением с открытым исходным кодом, ИСПОЛЬЗУЙТЕ ИСТОЧНИК! -, вы увидите, что метод, которым вы являетесь вызов возвращает NO только тогда, когда не удается запустить процесс подключения. Возвращаемое значение YES просто говорит: «Хорошо, я пытаюсь подключиться:

  • "Если что-то пойдет не так, я сообщу вам по телефону onSocket:willDisconnectWithError: и onSocketDidDisconnect:.
  • «Если все пойдет хорошо, вы получите onSocket:didConnectToHost:port: сообщение, ммк?»

Не ожидайте синхронного поведения от библиотеки асинхронных сокетов.

...