NSStream — ошибка обратного поиска DNS

Мне нужно открыть NSStream для точки доступа Wi-Fi, которая имеет только числовой адрес, а не имя. Для открытия сокета NSStream требуется 30-40 секунд. В ходе экспериментов я обнаружил, что telnet-соединение с точкой доступа из окна Windows было мгновенным, но на Mac подключение происходило за те же 30-40 секунд. изучая telnet, я обнаружил, что реализация на Mac немного отличается тем, что по умолчанию он пытается выполнить поиск по имени. читая справочную страницу для telnet, я обнаружил: -N Предотвращает поиск имени IP-адреса, когда хост назначения указан как IP-адрес.

когда я использовал "telnet -N порт IP-адреса", мое соединение было мгновенным! Я подозреваю, что эта же проблема вызывает задержку в моем соединении NSStream. Есть ли способ сделать эквивалент установки флага «-N» в NSStream?


person mflac    schedule 01.04.2012    source источник


Ответы (1)


Похоже, что NSHost недоступен на Cocoa Touch, поэтому вы не можете принудительно указать хост с заданным адресом, хотя я не знаю, отменяет ли это необходимость поиска DNS.

Эта проблема существует с 2005 года, хотя это может не относиться к библиотекам Cocoa Touch. В любом случае нет заданного решения:

person nflacco    schedule 01.04.2012
comment
Мне кажется, что использование CFSocket API решит проблему. - person JeremyP; 02.04.2012
comment
Я возился с этим, и CFSocket (в данном случае через SimpleSocket) действительно работает - person nflacco; 03.04.2012