|
Входит ли Ip в подсеть x.x.x.x/N (алгоритм проверки)
Нужен для применения под Delphi. Поэтому интересует алгоритм в общем виде (не, ну лучше конечно на паскале). Желательно с примером в числах.
Либо поясните плиз исходник на Perl (его не учил). Какие преобразования и операции имеются в виду там где подчеркнуто (все остальное мне интуитивно понятно)? Желательно тоже с примером в числах/символах.
Цитата:
$find_net = '123.123.45.4/30';
$some_ip = '123.123.45.5';
my ($net_ip, $net_mask) = split(/\//, $find_net);
my ($ip1, $ip2, $ip3, $ip4) = split(/\./, $net_ip);
my $net_ip_raw = pack ('CCCC', $ip1, $ip2, $ip3, $ip4);
my $net_mask_raw = pack ('B32', (1 x $net_mask), (1 x (32 - $net_mask)));
my ($ip1, $ip2, $ip3, $ip4) = split(/\./, $some_ip);
my $some_ip_raw = pack ('CCCC', $ip1, $ip2, $ip3, $ip4);
# $some_ip_raw вычисляем по аналогии с $net_ip_raw
if (($some_ip_raw & $net_mask_raw) eq $net_ip_raw){
print "$some_ip входит в подсеть $find_net";
}
|
__________________
sapienti sat.
Последний раз редактировалось denver; 20.06.2004 в 03:20.
|