Forum Webscript.Ru

Программирование => Perl => Тема начата: Wells от 08 Октября 2004, 11:19:55

Название: UDP socket - ???
Отправлено: Wells от 08 Октября 2004, 11:19:55
Нужно записать в удалённый UDP порт, а затем прочитать оттуда. Написал следующее:
use strict;
use IO::Socket;
my $rem_port = 2967;
my $proto = \'udp\';
my $send_msg = "\\x00\\xCE\\x00\\x00\\x00\\xC0\\x01\\x01\\x00\\x00\\x00\\x00\\xDA\\x49\\x1F\\x10";
my $size_msg = 466;
my $objSocket = IO::Socket::INET->new(PeerAddr => \'172.17.242.1\', PeerPort => $rem_port, Proto => $proto, Type => SOCK_DGRAM, Timeout => 5);
$objSocket->send($send_msg);
$objSocket->recv(my $recv_msg, $size_msg);
if (length($recv_msg) > 0) {
print "Is OK!\\n";
}
else {
print "Is bad!\\n";
}
$objSocket->shutdown(2);

Если порт прослушивается, то всё нормально. Если нет то тоже всё OK! Но если порт закрыт, например фаерволом, то timeout не отрабатывает. А очень нужно. Всё это под Windows. ActivePerl версия 5.8.4.810