Ну вообще на sourceforge.net проект зареген как LANTools API.
Сейчас прорабатываю саму реализацию - в частности всё пишеться на C++ с использованием классов. Каждый класс выполняет _сугубо_ свою задачу - возможно это приведёт к их достаточно большому количеству, НО в дальнейшем это обеспечит более простое внедрение новых функций.
Сейчас я думаю как лучше реализовать базовый класс LtScanNet - класс,, который занимается непосредственно сканированием компьютеров в сети. Сканирование будет производиться с использованием потоков(threads) - документацию по использованию потоков в linux нашел.
Стоит вопрос: как лучше передавать классу IP адресса подсетей для сканирования???
я думаю сделать структурой а-ля
struct subnet_addrs
{
int a, b, c; // маска подсети типа 192.168.1
int b_d; // последний байт адресса - с которого начинаем сканировать
int e_d; // последний байт адресса - до которого сканируем
};
НО, создаю структуру:
subnet_addrs *sa;
int subnet_count = 2; // количество подсетей
sa = new subnet_addrs[subnet_count];
Однако присвоить значения таким образом:
sa[0]->a = 192;
sa[0]->b = 168;
sa[0]->c = 1;
sa[0]->b_d = 1;
sa[0]->e_d = 255;
sa[1]->a = 192;
sa[1]->b = 168;
sa[1]->c = 2;
sa[1]->b_d = 1;
sa[1]->e_d = 255;
НЕ ПОЛУЧАЕТЬСЯ - компилятор выдаёт ошибку.
может это меня уже начинает глючить, но в windows MSVC такое сделать возможно.
Итак, стоит вопрос насущный:
Как найболее удобно можно передавать Ip адресса?
LanScope for Linux (предлагаю написать)
Модератор: Модераторы разделов
-
Serge Daniloff
- Сообщения: 106
- ОС: бубунту, sVista
Re: LanScope for Linux
A voyage into trance
-
WiZ
- Сообщения: 60
Re: LanScope for Linux
imho, лучше так (или сканировать предполагается всегда только подсети класса С?)
ЗЫ не "sa[0]->", а "sa[0]."
Код: Выделить всё
struct ip_range{
struct ip{
unsigned A : 8,
B : 8,
C : 8,
D : 8;
} from, upto;
}ЗЫ не "sa[0]->", а "sa[0]."
Arch / Linux-ck 64bit / xmonad / vim,opera,deadbeef,zsh /
-
Feldsher
- Сообщения: 7
- ОС: SLED 10
Re: LanScope for Linux
у меня есть предложение по поводу того как сканировать сеть по порядку
1) прога находит компьютеры где она уже запущена
2) выбирается диапазон сканирования и тип ресурсов/файлов
3) проги в сети РАСПРЕДЕЛЯЮТ между собой диапазон адресов
при этом уменьшится нагрузка на сеть (ИМХО)
4) после завершения сканирования создается файл/база с ресурсами и сохраняется на каждой машине на которой есть эта прога, чтобы не зависеть от других компьютеров
1) прога находит компьютеры где она уже запущена
2) выбирается диапазон сканирования и тип ресурсов/файлов
3) проги в сети РАСПРЕДЕЛЯЮТ между собой диапазон адресов
при этом уменьшится нагрузка на сеть (ИМХО)
4) после завершения сканирования создается файл/база с ресурсами и сохраняется на каждой машине на которой есть эта прога, чтобы не зависеть от других компьютеров
-
Serge Daniloff
- Сообщения: 106
- ОС: бубунту, sVista
Re: LanScope for Linux
Как мне посоветовал создатель LinScope - сперва заняться документацией.
Я набросал базовую систему основных классов и предлагаю вам их на рассмотрение:
LtScanNet - класс осуществляющий сканирование сети - т.е. поиск включённых компьютеров (с помощью пинга) с ипользованием мультипоточности, он также опеределяет имя компа.
Как только обнаруживаеться включённый компьютер - его адресс сразу передаётся классу LtScanResources - сканирование на наличие каких ливо ресурсов - ftp smb http...etc.
Как и договаривались - всё заноситься в базу по мере обнаружения, базу обслуживает класс LtScanBase.
Все чтение и запись _всех_ настроек осуществляется с помощью класса LtSettings
Я набросал базовую систему основных классов и предлагаю вам их на рассмотрение:
LtScanNet - класс осуществляющий сканирование сети - т.е. поиск включённых компьютеров (с помощью пинга) с ипользованием мультипоточности, он также опеределяет имя компа.
Как только обнаруживаеться включённый компьютер - его адресс сразу передаётся классу LtScanResources - сканирование на наличие каких ливо ресурсов - ftp smb http...etc.
Как и договаривались - всё заноситься в базу по мере обнаружения, базу обслуживает класс LtScanBase.
Все чтение и запись _всех_ настроек осуществляется с помощью класса LtSettings
A voyage into trance
-
WiZ
- Сообщения: 60
Re: LanScope for Linux
А к чему все эти извращения с классами? imho, для такой задачи обычного Си было бы вполне достаточно.Serge Daniloff писал(а): ↑15.10.2006 23:17LtScanNet - класс осуществляющий сканирование сети - т.е. поиск включённых компьютеров (с помощью пинга) с ипользованием мультипоточности, он также опеределяет имя компа.
Как только обнаруживаеться включённый компьютер - его адресс сразу передаётся классу LtScanResources - сканирование на наличие каких ливо ресурсов - ftp smb http...etc.
Как и договаривались - всё заноситься в базу по мере обнаружения, базу обслуживает класс LtScanBase.
Все чтение и запись _всех_ настроек осуществляется с помощью класса LtSettings
Arch / Linux-ck 64bit / xmonad / vim,opera,deadbeef,zsh /
-
pelmen
- Сообщения: 1268
- ОС: debian
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: LanScope for Linux
Есть ли какие-нибудь успехи/неудачи? Проект мёртв?
-
admiral
- Сообщения: 361
Re: LanScope for Linux
Serge Daniloff писал(а): ↑15.10.2006 23:17LtScanNet - класс осуществляющий сканирование сети - т.е. поиск включённых компьютеров (с помощью пинга) с ипользованием мультипоточности, он также опеределяет имя компа.
Как только обнаруживаеться включённый компьютер - его адресс сразу передаётся классу LtScanResources - сканирование на наличие каких ливо ресурсов - ftp smb http...etc.
Как и договаривались - всё заноситься в базу по мере обнаружения, базу обслуживает класс LtScanBase.
Все чтение и запись _всех_ настроек осуществляется с помощью класса LtSettings
IMHO плохо по пингам определять наличие компа, они могут быть запрещены (У меня когда была винда, так Оутпост чего-то запретил пинги входящие). Лучше непосредственно сканировать 21, 139, 80 порты.
О, и еще, наверное желательно вначале сканировать один тип портов на всех компах, потом другой, а то файеры могут начать ругаться на сканирование портов.
-
Serge Daniloff
- Сообщения: 106
- ОС: бубунту, sVista
Re: LanScope for Linux
Ты знаешь, в C++ISO стока подводных камней, что у меня основное время уходит на то, чтобы разобряться почему на меня ругаеться компилятор, хочеться плюнуть на С++ и начать писать на mono.
admiral писал(а): ↑27.10.2006 14:41Serge Daniloff писал(а): ↑15.10.2006 23:17
LtScanNet - класс осуществляющий сканирование сети - т.е. поиск включённых компьютеров (с помощью пинга) с ипользованием мультипоточности, он также опеределяет имя компа.
Как только обнаруживаеться включённый компьютер - его адресс сразу передаётся классу LtScanResources - сканирование на наличие каких ливо ресурсов - ftp smb http...etc.
Как и договаривались - всё заноситься в базу по мере обнаружения, базу обслуживает класс LtScanBase.
Все чтение и запись _всех_ настроек осуществляется с помощью класса LtSettings
IMHO плохо по пингам определять наличие компа, они могут быть запрещены (У меня когда была винда, так Оутпост чего-то запретил пинги входящие). Лучше непосредственно сканировать 21, 139, 80 порты.
О, и еще, наверное желательно вначале сканировать один тип портов на всех компах, потом другой, а то файеры могут начать ругаться на сканирование портов.
Идея, НО что если на компьтере нет ни smb ни ftp ни http - как определить что он включён?
лично мне это требуеться, чтобы можно было следить за сетью и по возможности определить не завис ли свитч
можно добавить этот вариант сканирования как альтернативный
A voyage into trance
-
Horrible
- Сообщения: 256
- Статус: Emacs geek
- ОС: Emacs