2014-01-30 1 views
2

Как работает класс IOS Reachability, и что особенного в IP-адресе 169.254.0.0?Как работает класс Reachability iOS и почему IP-адрес 169.254.0.0?

Я пытаюсь выяснить, включен ли Wi-Fi, независимо от того, подключена ли она к реальной сети Wi-Fi или нет.

Я не нашел удовлетворительного ответа на этот вопрос на SO, и даже ответы, которые пытаются ответить на этот вопрос, не работают для меня.

ответ

2

Если вы не получили IP-адрес от DHCP, он автоматически назначит вам случайный адрес в диапазоне 169.254.x.x. Поэтому, если у вас есть IP-адрес, например, это означает, что вы подключены к сети и настроены на использование DHCP для получения адреса, но он не может получить IP-адрес от DHCP.

Кажется, что нет никакого способа просто определить, включен ли Wi-Fi и не подключен к сети, поэтому я думаю, что вам там не повезло. Лучшее, что вы можете сделать, это обнаружить, если вы подключены к сети Wi-Fi, но часто, если вы отсутствуете, вы не будете подключены к Wi-Fi-сети, даже если она включена.

+0

Я бы подумал, что он указал, что вы * не * подключены к сети. – EJP

+0

@EJP, если вы не подключены к сети, у вас не будет IP-адреса вообще. – Gavin

+1

Спасибо, мы на самом деле глубоко погрузились в это. Мы попробовали использовать unix API, чтобы увидеть имена имен интерфейса Ethernet, на iOS7, eth0 всегда есть. Мы также попробовали запросить фоновые запущенные процессы, wifid всегда работает, независимо от того, включен он или нет (в отличие от bluetooth, который умирает, когда выключен). Нам не повезло, его невозможно обнаружить без использования недокументированного API (которого мы не пытались). –

Смежные вопросы