Здравствуйте, vasilchmax, Вы писали:
V>Попробую сделать инициализацию сигналов в главном потоке. Статью по ссылке читал (входит в QAssistant)
V>Теперь про поиск.
V>Я ищу не список ФТП (но можно и ФТП тоже искать
), а список обычных расшареных ресурсов. Все потоки, которые запускаются, практически сразу удалаются, после того, как соединяются с компом и получают список ресурсов и другой информации.
Если в одно время запущено много потоков, то системе будет тяжко.
V>По вопросам:
V>1. Можно попытаться
V>2. А как его реализовать в Qt не подскажете?
пинг чисто с помощью qt никак —
http://lists.trolltech.com/qt-interest/2002-10/thread00351-0.html
V>3. Не очень знаю как сделать
. В принципе на 90+% компов стоит Windows, но есть и *nix'ы.
Например, если попытка получить список расшареных ресурсов провалилась, считать комп отключенным. (ты же уже как-то получаешь список ресурсов?)
V>На счет оптимизаций.
V>а. Не имеет смысла. В сети 200+ компов в одном сетевом диапазоне, причем количество растет.
V>б. Попробую.
А вообще расскажи, что ты хочешь от поисковика по локалке? как планируешь организовать индексирование и собственно сам поиск?
проще будет выбирать технологии, которые тебе есть смысл использовать. Структура и организация сети (если она не секретная) тоже может помочь.
Я бы делал поисковик так:
1. Индексирование
Для каждого ip в сети, пытался получить список ресурсов. Если ресурсы есть, индексирую их и сохраняю ip (и имя до кучи, если смогу определить) в список доступных машин (оптимизация а).
2. Поиск
Собственно поиск и определение доступна ли машина из списка машин, на котором найдены ресурсы.
При такой схеме, не нужно морочиться с получением списка всех доступных машин в сети при поиске. Это происходит на этапе индексирования, а оно может быть не завязано на gui и временные ограничения здесь не кретичны. Соответственно переиндексировать сеть через какой-то промежуток времени.
V>И еще одно. Непонятно почему socket->peerName(); в 3-ей функции не имя хоста, а его ИП
Я конечно не проверял, но думаю, что если ты будешь конектиться по имени к компу, то эта функция вернет имя машины. Если же ты конектишься по ip, то класс QSocket не будет определять для тебя имя, и эта функция вернет ip.