我正在运行以下内容:
perl -wl -e 'print gethostbyname ("1234");'
123424Ò
同样运行gethostbyname ("1")
返回一个定义的结果,这根本不符合这里写的内容。
我想知道我是否应该使用这种方法?我试图做的是查找给定的主机名是否有效。
我正在运行以下内容:
perl -wl -e 'print gethostbyname ("1234");'
123424Ò
同样运行gethostbyname ("1")
返回一个定义的结果,这根本不符合这里写的内容。
我想知道我是否应该使用这种方法?我试图做的是查找给定的主机名是否有效。
1249767172
在浏览器中输入内容,您最终可能会访问 Google 。这是因为有效的 IP 地址只是 0 到 4294967295 之间的数字。
当然,您更熟悉点分格式表示法 ( 74.125.239.4
),但许多地方也直接接受十进制数 ( 1249767172
) 甚至是十六进制表示法 ( 0x4A7DEF04
)。
由于您提供了有效的 IP 地址,因此不会返回任何错误。
$ perl -MSocket=inet_ntoa -E'
my $addr = gethostbyname($ARGV[0]);
say inet_ntoa($addr);
' 1249767172
74.125.239.4
$ perl -MSocket=inet_ntoa -E'
my $addr = gethostbyname($ARGV[0]);
say inet_ntoa($addr);
' 1
0.0.0.1
$ perl -MSocket=inet_ntoa -E'
my $addr = gethostbyname($ARGV[0]);
say inet_ntoa($addr);
' 1234
0.0.4.210
(确切的行为可能因系统而异。gethostbyname
我的 Windows 和我的 cygwin 版本无法识别这些数字,尽管同一台机器上的 FireFox 可以。)