#objective-c #cocoa #network-programming
#objective-c #cocoa #сетевое программирование
Вопрос:
Мне нужно написать программу на Mac OS X для управления некоторым количеством проекторов в локальной сети (используя IP-адрес), и я пытаюсь выяснить, как отслеживать состояние их подключения. Что-то вроде простого пинга, просто чтобы убедиться, что я могу с ними связаться.
Я пытался использовать вызов NSURLRequest requestWithURL. Это сработало, но программа довольно долго перестает отвечать, если какой-либо из проекторов отключен. Я просто хочу получить статус и изменить индикацию пользовательского интерфейса.
Есть ли лучшие способы сделать это? Любая помощь или указание в правильном направлении были бы замечательными, спасибо.
Ответ №1:
Попробуйте установить свойство timeoutInterval в NSURLRequest. В противном случае вам придется запускать ping-соединение в фоновом потоке или использовать use NSURLConnect и проверять асинхронные обратные вызовы, доставляемые делегату.
Комментарии:
1. Спасибо. NSURLConnect и асинхронные обратные вызовы для делегата работают. Однако любопытно, как запустить ping-соединение с помощью кода?
2. Если вы имеете в виду реальный ping с использованием эхо-запросов ICMP, то обычный способ сделать это — создать необработанный сокет и самостоятельно создать заголовки ICMP. По крайней мере, так мы привыкли это делать.