Здравствуйте, vasilchmax
V>Я в многопоточном программировании не очень (так что сильно не бейте
), поэтому возможно (точнее наверняка
) что-то сделал не так. При таком коде все работает, но судя по всему неправильно. Потоки не получают свой цикл обработки событий, т.к. главный поток время от времени виснет
И еще одно, почему-то после закрытия программы выпадает сообщение об ошибке "Cannot send event to objects owned by other thread".
Проблема с потоками, если я не ошибаюсь в том, что ты устанавливаешь сигналы не в главном потоке. Вынеси инициализацию сигналов из функции run.
И почитай про
многопоточность в Qt
Теперь про поиск.
Ты ищешь по фтп и пытаешься соединиться с фтп сервером?
У тебя запускается 254 дополнительных потока — это слишком круто для системы. У тебя все остальные приложения нормально работают, когда начинает выполняться этот код?
Добавлять компьютеры в список думаю лучше по мере поступения информации.
Варианты определения, которые я вижу:
1. Несколько потоков — на каждый поток диапазон адресов.
Проблема — долгий коннект к несуществующим компам может хорошо затормозить весь процесс определения (но можно поставить таймаут на коннект поменьше. для локалки должно прокатить)
2. Широковещательный пинг (на крайняк просто пинг)
Проблема: файрволы
3. Использование протоколов, которые подняты на всех компах локалки (а ля смб)
Некоторые оптимизации:
а. Сделать список индексируемых компьютеров (тех кто согласится индексироваться, либо свой список) и резолвить по этому списку (он сильно ограничит количество вариантов)
б. Сначала смотреть ARP таблицу
Вот результаты поиска по этому сайту.
WNetOpenEnum, WNetEnumResource и WNetCloseEnum. Но это работает только если включен NETBIOS через TCP/IPАвтор: valager
Дата: 29.03.07
Вывод всех компьютеров сетиАвтор: bacho_sun
Дата: 17.11.05
список включенных компьютеров рабочей группыАвтор: Mel
Дата: 28.10.03