Я разрабатываю приложение для iPhone, которое сканирует диапазон IP-адресов для определенного порта. С 192.168.1.2 по 192.168.1.10 включительно.
Я использую сетевые методы CoreFoundation, которые создают потоки ввода и вывода и отправляют потоковые события обратно моему делегату.
При циклическом обходе диапазона, пытаясь подключиться к каждому IP-адресу, я устанавливаю тайм-аут, и если я не получаю ответ по указанному времени, я знаю, что на этом IP-адресе нет устройства.
Я также знаю, что устройство не настроено, если я получаю NSStreamEventNone.
В большинстве случаев это все работает. Я установил тайм-аут 0,3 секунды. Таким образом, сканирование диапазона занимает 2,4 секунды.
Однако в некоторых случаях, по-видимому, случайным образом, для каждого IP-адреса я получу ответ NSStreamEventErrorOccurred.
Документация Apple гласит:
Если объект потока запланирован в цикле выполнения, объект сообщает о событии NSStreamEventErrorOccurred своему делегату в потоке: handleEvent: message.
Но я не верю, что помещаю его в любой цикл выполнения, кроме текущего цикла в главном потоке.
Что еще могло вызвать NSStreamEventErrorOccurred?