Когда я выполняю неблокирующее соединение с адресом обратной связи из симулятора iOS (который, вероятно, использует тот же стек TCP, что и Mac и FreeBSD), я вижу, что соединение всегда успешно, даже когда серверный процесс не запущен.
Я обнаружил, что соединение успешно установлено с помощью select () с нулевым тайм-аутом.Таким образом, до тех пор, пока select () возвращает 0, я предполагаю, что соединение установлено, если оно возвращает -1, у меня возникает ошибка с ошибкой, а если возвращается 1, сокет готов к чтению (так как сервер, должно быть, ответил)и я начинаю читать после сообщения об успешном подключении.
Это хорошо работает для всех адресов, кроме обратной петли.В loopback select () всегда возвращает 1, даже если сервер не запущен.Итак, я начинаю читать, что не получается, и я справляюсь с этим.Но я должен был обнаружить это через select ()!