Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];

Вниз

Узнать о кампьютерах в сети. 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.013 c
2-1148357374
Rubey
2006-05-23 08:09
2006.06.11
Непонятній єффект при вводе в DBGRID


2-1148269241
Raf
2006-05-22 07:40
2006.06.11
ACCESS


1-1146816927
гога
2006-05-05 12:15
2006.06.11
Работа с датой


1-1146559645
neo_cleaner
2006-05-02 12:47
2006.06.11
сохранение формы


2-1148674496
ZV
2006-05-27 00:14
2006.06.11
SOUND





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский