print "DNS <UDP> client test ($dns)\n";
print "-----------\n\n";
$s = IO::Socket::INET->new(Proto=>'udp');
unless ($s) { print "Error > Can't create socket > $!"; exit; }
my $b = pack ('nSn4', (int rand 65535), 0x1, 0x1, 0x0, 0x0, 0x0);
foreach (split (/\./, "mxs.mail.ru")) { $b .= pack ('C', length ($_)) . $_; }
$b .= pack ('Cn2', 0x0, 0xF, 0x1);
$s->send($b, 0, $r);
$b = "";
my $t = IO::Select->new($s);
if ($t->can_read(5)) { $s->recv($b, 512); } else { close $s; print "Error > Timeout"; exit; }
close $s; print "Ok";
print "\n\n";
print "SMTP Client test ($smtp)\n";
print "-----------\n\n";
$r = (gethostbyname $smtp)[4];
unless ($r) { print "Error > Can't resolve SMTP hostname"; exit; }
$s = IO::Socket::INET->new(Proto => "tcp", Type => SOCK_STREAM);
unless ($s) { print "Error > Can't create socket > $!"; exit; }
$r = sockaddr_in(25, $r);
unless ($s->connect($r)) { close $s; print "Error > Can't connect > $!"; exit; }
$r = <$s>; close $s;
if (length $r) { print "Ok\n$r"; } else { print "Error > Can't read response"; }