vesnoplias
|
|
1 | |
Есть вопрос по сетевому программированию13.02.2007, 11:52. Показов 6336. Ответов 1
Метки нет (Все метки)
Пишу прогу для поиска файлов в сети по заданной маске.
Можно ли использовать процедуры FindFirstFile, FindNextFile в асинхронном режиме? Или какими другими их можно заменить? |
13.02.2007, 11:52 | |
Ответы с готовыми решениями:
1
Литература по сетевому программированию Литратура по сетевому программированию Литература по сетевому программированию Литература по сетевому программированию |
0 / 0 / 1
Регистрация: 08.09.2006
Сообщений: 23
|
||||||||||||||||||||||||||
13.02.2007, 15:57 | 2 | |||||||||||||||||||||||||
Сообщение было отмечено как решение
Решение
Visual C++: Поиск ресурсов в локальной сети
Ресурсы локальной сети образуют древовидную структуру. Самыми низшими ветвями дерева являются Sharepoint. Это ни что иное, как сетевые каталоги и сетевые принтеры. Всё дерево растет из одного корня. На втором уровне располагаются провайдеры. Скорее всего, вы встретитесь только с двумя провайдерами: Microsoft Network и NetWare. Стало быть, для того, чтобы узнать, какие ресурсы в вашей сети, вам придется писать программу, которая совершает обход представленного дерева. Не думайте, однако, что это безумно сложно. К, счастью, имеются функции АРI, которые легко справляются с поставленной задачей. Правда, без рекурсии все же не обойтись, но писать рекурсивные функции, господа, — это же одно удовольствие. Мы начнем с описания трех функций, с помощью которых собираемся изучать нашу сеть.
Второй параметр — определяет тип искомого ресурса. Может принимать следующие значения: RESOURCETYPE_ANY, RESOURCETYPE_DISK, RESOURCETYPE_PRINT. Третий параметр — принимает следующие значения: 0 (для всех ресурсов), RESOURCEUSAGE_CONNECTABLE, RESOURCEUSAGE_ALL, RESOURCEUSAGE_CONTAINER, RESOURCEUSAGE_ATTACHED. Четвертый параметр — является указателем на структуру NETRESOURCE. Если первый параметр не равен RESOURCE_GLOBALNET, то данный параметр следует положить равным нулю. Если вы хотите начать поиск с самого начала (от корня) дерева, то первый раз следует вызвать функцию с параметром равным NULL. Пятый параметр — является указателем на переменную, которая в случае успешного выполнения функции становится дескриптором поиска. Следующая функция осуществляет всю работу по поиску ресурсов данного уровня.
Второй параметр — указывает на переменную, которая должна содержать количество ресурсов, которые следует найти. Если переменная содержит 0xFFFFFFFF т. е. -1, то функция будет стараться найти все ресурсы данного уровня. Третий параметр — указывает на буфер, который получит информацию о найденных ресурсах. Функция трактует этот буфер, как массив из структур NETRESOURCE. Следует взять гарантированно большой буфер. Четвертый параметр — указатель на переменную, которая содержит количество байт в буфере. Если буфер слишком мал, то после выполнения функции (с ошибкой) параметр будет содержать необходимый размер буфера. Как и другие Wnet-функции, данная функция возвращает NO_ERROR, если она выполнилась успешно. Сообщение об ошибке - ERROR_NO_MORE_ITEMS - говорит нам, что не найдено ни одного ресурса. Последняя в указанном ряду функция закрывает поиск, на который указывает дескриптор hEnum.
Функция poisk вполне универсальна и может быть приспособлена для разных программ. Она позволяет не только просматривать все дерево сетевых ресурсов. Структуру NETRESOURCE можно заполнить для любого уровня и вызвать функцию, указав значение второго параметра неравным нулю. для этого необходимо задать следующие поля: dwScore, dwType, dwUsage(0), lpRemoteName, lpLocalName(NULL). Функция WNetEnumResource не позволяет определять скрытые ресурсы (сетевые диски с именами, оканчивающимися на ‘$‘). Для этой цели следует использовать функцию из другой группы - что мы и делаем ниже. Проверка if(ntbuf[i].lpRemoteName!=NULL) необходима для запуска программы на рабочих станциях с операционными системами Windows 95/98/МЕ. На втором уровне у данных операционных систем lpRemoteName оказывается равным NULL. В заключении параграфа приведем пример на использование функции NetShareEnum. Пример взят из документации Microsoft и несколько переработан.
Так же программа находит скрытые устройства, которые невозможно обнаружить с помощью функции WnetEnumResourcu.
0
|
13.02.2007, 15:57 | |
13.02.2007, 15:57 | |
Помогаю со студенческими работами здесь
2
Книга по сетевому программированию Литература по сетевому программированию Книги по сетевому программированию Книги по сетевому программированию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |