Проверка удалённого UDP порта
Добавлено: 27 сен 2004, 12:34
Помогите чайнику! Можно-ли определить работает-ли на удалённом хосте программа использующая UDP порт?
Код: Выделить всё
use strict;
my $subnet1 = '10.0.0.1-10.0.56.254';
checkSubNet1($subnet1);
#/////////////////////////////////////////////////////////////////////////////////
sub checkSubNet1 {
my @arrSubNet = split('-', @_[0]);
my @arrStartIP = split('\.', @arrSubNet[0]);
my $startIP_A = @arrStartIP[0];
my $startIP_B = @arrStartIP[1];
my $startIP_C = @arrStartIP[2];
my $startIP_D = @arrStartIP[3];
my @arrStopIP = split('\.', @arrSubNet[1]);
my $stopIP_A = @arrStopIP[0];
my $stopIP_B = @arrStopIP[1];
my $stopIP_C = @arrStopIP[2];
my $stopIP_D = @arrStopIP[3];
for ($startIP_A; $startIP_A <= $stopIP_A; $startIP_A ++) {
#print "$startIP_A\n";
#//////////////////////////////////
for ($startIP_B; $startIP_B <= $stopIP_B; $startIP_B ++) {
#print "$startIP_B\n";
if ($stopIP_B == $startIP_B) {
$stopIP_C = @arrStopIP[2];
}
else {
$stopIP_C = 254;
}
#//////////////////////////////////
for ($startIP_C; $startIP_C <= $stopIP_C; $startIP_C ++) {
#print "$startIP_C\n";
if ($stopIP_C == $startIP_C) {
$stopIP_D = @arrStopIP[3];
}
else {
$stopIP_D = 254;
}
#//////////////////////////////////
for ($startIP_D; $startIP_D <= $stopIP_D; $startIP_D ++) {
my $host_IP = $startIP_A.'.'.$startIP_B.'.'.$startIP_C.'.'.$startIP_D;
print "$host_IP\n";
#checkHost($host_IP);
}
$startIP_D = 1;
}
$startIP_C = 1;
}
}
}
#/////////////////////////////////////////////////////////////////////////////////
Еше раз. Посмотри документацию 'perlipc'. Там всё подробно описано, как сделать TCP или UDP запрос и получить ответ. И что характерно, пример для UDP дан с циклом для проверки нескольких хостов.Про fsockopen там не нашёл ничего!![]()
Код: Выделить всё
use strict;
use Socket;
my $subnet1 = '10.0.0.1-10.0.5.254';
checkSubNet1($subnet1);
sub checkSubNet1 {
my ($start, $stop) = split(/\-/, shift);
$start = unpack('N', inet_aton($start));
$stop = unpack('N', inet_aton($stop));
for (my $curaddr = $start; $curaddr <= $stop; $curaddr++) {
my $host_IP=inet_ntoa(pack('N', $curaddr));
print "$host_IP\n";
#checkHost($host_IP);
}
}