![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отобразить процесс опроса некоторого диапазона IP-адресов [D7, WinXP]
Артем К. © (2004-10-08 07:27:00)в ProgressBare?
Есть два списка, в которых хранятся части IP-адресов (IP1-начальный адрес, IP2-конечный адрес). IP1 и IP2 определяют диапазон опрашиваемых адресов.
000.000.000.000
3 2 1 0
Делаю перебор по диапазону адресов.
for i:=StrToInt(IP1.Strings[3])to StrToInt(IP2.Strings[3])do
for j:=StrToInt(IP1.Strings[2])to StrToInt(IP2.Strings[2])do
for n:=StrToInt(IP1.Strings[1])to StrToInt(IP2.Strings[1])do
for m:=StrToInt(IP1.Strings[0])to StrToInt(IP2.Strings[0])do begin
tmpIPAddress:=Format('%d.%d.%d.%d',[i,j,n,m]);
end;
Как этот процесс отобразить в ProgressBare?
Reindeer Moss Eater (2004-10-08 09:11:00) [1]А где я сказал, что их надо опрашивать?
Reindeer Moss Eater (2004-10-08 09:11:00) [2]И где сказано что к ним нет доступа?
И кто с утра отменил маски ?
КаПиБаРа (2004-10-08 09:09:00) [3]Reindeer Moss Eater © (08.10.04 8:47) [2]
В одном цикле это конечно просто, но если подумать, зачем опрашивать все адреса подсети, если к ней нет доступа?
Reindeer Moss Eater (2004-10-08 08:47:00) [4]Как все сложно.
IP адрес - это одно целочисленное длиной 32 бита.
Диапазон адресов - это один цикл for.
Артем К. (2004-10-08 08:39:00) [5]Ну в общем-то я и сам разобрался. Если кому надо, привожу исходник:
//сначала делаем строки полных адресов из частей IP1 и IP2
ProgressBar.Min := ntohl(inet_addr(pchar(StartIPAddress)));
ProgressBar.Max := ntohl(inet_addr(pchar(EndIPAddress)));
for i:=StrToInt(IP1.Strings[3])to StrToInt(IP2.Strings[3])do
for j:=StrToInt(IP1.Strings[2])to StrToInt(IP2.Strings[2])do
for n:=StrToInt(IP1.Strings[1])to StrToInt(IP2.Strings[1])do
for m:=StrToInt(IP1.Strings[0])to StrToInt(IP2.Strings[0])do begin
tmpIPAddress:=Format('%d.%d.%d.%d',[i,j,n,m]);
ProgressBar.Position := ntohl(inet_addr(pchar(tmpIPAddress)));
end;