【发布时间】:2018-04-15 01:32:25
【问题描述】:
我有下面的程序,它建立一个套接字连接并读回服务器返回的第一行。它适用于我网络内的任何东西,但如果我试图走出去,它只会挂起并且不做任何事情。即端口25上的smtp.gmail.com。不知道有什么问题,谷歌搜索并没有给我太多。
use Socket;
use Net::Ping;
$remote = $ARGV[0];
$port = $ARGV[1];
my $p = Net::Ping->new();
if (!$p->ping($remote)) {
print STDERR "Error: Invalid hostname\n";
exit(1);
}
if ($port =~ /\D/) {
$port = getservbyname($port, 'tcp')
}
if ($port > 65535 || $port < 0) {
print STDERR "Error: Invalid port\n";
exit(1);
}
$iaddr = inet_aton($remote);
$paddr = sockaddr_in($port, $iaddr);
$proto = getprotobyname('tcp');
socket(SOCK, PF_INET, SOCK_STREAM, $proto);
connect(SOCK, $paddr);
$line = <SOCK>;
print STDOUT "$line\n";
close(SOCK);
exit(0);
任何帮助将不胜感激。
【问题讨论】:
-
始终使用
use strict; use warnings qw( all );!!!