|
| |
|
NetSearcher - сканер локальной сети
Введение
|
      
Предположим ваш компьютер входит в состав некоторой одноранговой сети (домашная сеть, сеть общежития и т.п.), то есть такой, в которой все компьютеры
равноправны и нет отдельный выделенных ресурсов типа файловых или каких-либо других серверов. При количестве компьютеров превышающем десяток, найти
в такой сети конкретный файл или группу файлов по некоторому расширению (например, фильмы: *.avi) практически не представляется возможным. Найти
вы может быть и сможете, но следить за обновлением таких файлов - непосильная задача.
     
Вашему вниманию предлагается программа, автоматизирующая поиск (по расширению) файлов в сети. В настоящий момент реализован поиск файлов-фильмов,
однако структура исходного кода программы такова, что адаптировать механизм поиска можно под совершенно произвольные требования.
|
Описание
|
     
Итак, общий подход заключается в следующем: сканер периодически запускается на одной из машин вашей одноранговой сети, сканирует разделяемые (shared) каталоги других пользователей сети, а полученный снимок сети (в виде xml-файла) отправляет на web-сервер post-запросом (это легко переделывается, можете сохранять файл снимка локально). Далее, сценарий принимающий post-запрос сохраняет информацию о фильмах, например, в базе данных. Пользователь посредством web-интерфейса может просматривать доступные в сети фильмы и закачивать их. Таким образом, ему не обязательно пролазить все компьютеры в сети, эту работу за него сделает сканер сети.
     
Сканер не является сервисом в смысле WinNТ, а запускается при старте системы (то есть его необходимо поместить в каталог Startup или соответствующий ключ реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run). Однако, являясь по сути резидентным приложением, может послужить основой для создания некоторого сервиса поиска фильмов в сети (как в предыдущем азбзаце - интеграция с web-сервером).
Ниже перечисленны основные возможности сканера:
| Поиск файлов в локальной сети по заданному расширению(ям) в каталогах, чье название проходит по накладываемой маске |
| Определение MAC-адреса хоста, на котором были найдены файлы (данная информация поможет при идентификации хостов) |
| Формирование xml-файла с описанием найденных файлов: хост, каталог, имя файла, дата сканирования |
| Определение длины файла, а также его идентификация (в случае .avi файлов - продолжительность фильмов в миллисекундах) |
| Часто при плохом соединении поиск файлов может повисать, для этого случая предусмотрено уничтожение зависшего потока. |
| Отправка xml-снимка состояния сети на web-сервер post-запросом (посредством msxml) |
| Отчуждаемое ядро сканера, которое может быть обличено в консольное приложение, win32-приложение, winnt-сервис и т.п. |
|
Настройка сканера
|
Реализована возможность настройка сканера (netsearcher.xml): хосты, по которым искать (если не задано, то поиск идет по всем хостам), маска для названия шар (например, фильмы, films, кино, video), список расширений файлов, частота сканирования, адрес страницы web-сервера, которая будет принимать post-запрос.
<netsearcher>
<parameters>
<hostslike/>
<shareslike>films, film, фильмы, кино, flm, video</shareslike>
<extslike>avi, mov</extslike>
<frequency>300</frequency>
</parameters>
<send>
<host>http://localhost/net/synchro.php</host>
</send>
</netsearcher>
|
Обработка post-запроса
|
Обработка post-запроса, присланного сканером сети, может быть реализована на php следующим образом:
<?php
$fp = fopen ("data.xml", "wt");
fwrite($fp, $HTTP_RAW_POST_DATA);
fclose($fp);
?>
Далее с этим файлом вы можете делать очень много вещей: просто показывать список фильмов доступных в сети, организовать базу данных, в которую помещать найденные фильмы, а затем показывать пользователю как новые фильмы (недавно появившиеся в сети), так и все фильмы, добавив разбивку по жанрам и многое другое.
|
|
|
|