(iphone) тест доступности для конкретного ip / порта? - PullRequest
2 голосов
/ 04 мая 2011

Я посмотрел на образец Reachability от Apple и еще один пример из «Книги поваренных разработок Iphone»

Вот шаги для проверки доступности ip / порта

  1. создать переменную sockaddr_in с указанным ip / портом.
  2. вызовите SCNetworkReachabilityCreateWithAddress с адресом
  3. вызовите SCNetworkReachabilityGetFlags и посмотрите, установлено ли kSCNetworkFlagsReachable.

Я считаю, что любой действительный (действительный диапазон) ip / порт, который я установил для тестирования, мой код говорит, что он достижим, даже если они на самом деле недоступны, когда я проверяю ping или тест telnet.
(Я видел другие посты SO, где тест на достижимость для конкретного ip всегда был успешным) Достижимость достижимости с адресом не работает

является ли SCNetworkReachability .. call только проверкой правильности аргумента (IP-адрес или имя хоста)? то есть, они фактически отправляют пакет (или соединяются) по указанному адресу для проверки достижимости?

Я могу реализовать асинхронное соединение с тайм-аутом самостоятельно, но неясно, сколько времени должно быть, чтобы тайм-аут не был отклонен рецензентами яблок. (Я беспокоюсь, если это займет слишком много времени, рецензенты яблок могут подумать, что мое приложение не обрабатывает достижимость сети вообще)

Спасибо

1 Ответ

2 голосов
/ 06 мая 2011

Чтобы ответить на ваш вопрос, основываясь на комментариях выше, согласно SCNetworkReachability Reference

Удаленный хост считается достижимым, когда пакет данных, отправленный приложением всетевой стек, можно оставить локальное устройство.Достижимость не гарантирует, что пакет данных будет фактически получен хостом.

Это не сможет проверить состояние вашего сервера, но только убедитесь, что он может получить пакет данных.

Apple хочет, чтобы ваше приложение элегантно завершилось сбоем в случае каких-либо проблем, связанных с сетью, в первую очередь необходимо проверить, доступен ли Интернет с использованием Reachability.Если недоступность недоступна, вы можете предположить, что не сможете использовать сервер, и немедленно предупредить пользователя.Следующие шаги должны правильно обработать ошибки, возвращаемые вашим сервером, такие как неверный запрос 400, файл 404 не найден, установить разумное время ожидания и не блокировать пользовательский интерфейс во время длительных загрузок, показывая какой-то индикатор состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...