Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

Узнать о кампьютерах в сети. Sockets.   Найти похожие ветки 

 
Galiaf ©   (2006-02-05 01:30) [0]

Я конечно понимаю, что бы узнать на каких компьютерах запущен сервер, то нужно пройтись по всем адресам посылать туда какие-нибудь сообщения но вот только не представляю как это можно реализовать сокетами. Может кто подскажет или я ошибаюсь вообще с направлением мыслей. Можно конечно пробовать подключаться по каждому адресу но во первых я не знаю в каком диапазоне и вообще как грамотно это делать, а во вторых я должен сперва узнать о всех серверах и только потом подключаться. Мне надо, главное узнать адреса запущенных серверов, неглавное узнать про все компы в сетке и кто подкллючен к серверу а кто нет или не запущена моя программа. Надеюсь на помощь.


 
Korneley ©   (2006-02-08 21:04) [1]

Перебор адресов я делал так (использовал Indy):
Определяем свой адрес, например так

 FSW  := TIdStackWindows.Create;
 FLocalIP := FSW.LocalAddress;

На основе своего начинаем генерить адреса своей подсети изменяя биты с самой "правой" группы адреса, складывая её XOR - ом с байтом от 0 до 255. Далее то же самое со второй справа (на каждое изменение второй - полный прогон по первой - рекурсия напрашивается :) и т.д. Каждый новый адрес пингуем

 ICMP.Host := NewIP; // ICPM - тип TIdICMPClient
 ICMP.ping("собственно пинг");
 if ICMP.ReplyStatus.ReplyStatusType = rsEcho then begin
   // здесь обрабатываем удачный пинг
   // ICMP.ReplyStatus.FromIpAddress
   // FSW.WSGetHostByAddr(ICMP.ReplyStatus.FromIpAddress))
   // адрес и имя
 end
 else // неудачный пинг

   Не забудь выставить таймаут ICMP поменьше (по умолчанию 5 сек. на пинг). Как возникнет ситуация на пинге типа "Адрес не роутится" - все, все адреса подсети перебраны. Да, еще нужно отсеять адреса
типа ххх.ххх.ххх.000
 Про подключения не знаю, а насчет проверки своей программы, так вставить в неё агента, который по какому-нибудь порту ответит на твой запрос. Правда если ответ какой - нибудь файрвол по дороге не порежет...


 
Anatoly Podgoretsky ©   (2006-02-08 21:38) [2]

Если ничего неизвестно, то придется перебирать все 4 миллиарда адресов для IPv4


 
Korneley ©   (2006-02-08 22:07) [3]

Зато когда известен свой адрес и можно ограничиться только своей подсетью, тогда круг поисков гораздо меньше (если интересует только своя внутренняя сеть).  Иногда поиск хоста в локалке под Win ,быстрее выполнить именно перебором, чем WNetOpenEnum и иже с ним. Особенно если сеть кривая. У меня кстати как раз такой случай.


 
Guest12   (2006-02-08 23:29) [4]

Pardon



Страницы: 1 вся ветка

Текущий архив: 2006.06.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
15-1147127757
Сорс
2006-05-09 02:35
2006.06.11
Помогите найти ошибку в коде?


2-1148307879
Бегин
2006-05-22 18:24
2006.06.11
Операции со строками в текстовом файле


15-1147808951
DillerXX
2006-05-16 23:49
2006.06.11
Помогите с вордом :(


2-1148639368
Glex
2006-05-26 14:29
2006.06.11
Как получить имена всех подпапок 1ур. данной папки?


2-1148458182
elfebet
2006-05-24 12:09
2006.06.11
Как выбрать десятичное число случайным образом (random)?