1

私は以下を実行しています:

perl -wl -e 'print gethostbyname ("1234");'
123424Ò

running も定義された結果を返しますが、これはここgethostbyname ("1")に書かれていることとはまったく一致しません。

この方法を使用する必要があるかどうか疑問に思っていますか?私がやろうとしているのは、特定のホスト名が有効かどうかを調べることです。

4

1 に答える 1

1

ブラウザ1249767172に入力すると、Google にアクセスする可能性があります。これは、有効な IP アドレスが 0 から 4294967295 までの数字にすぎないためです。

確かに、ドット形式の表記法 ( 74.125.239.4) の方がよく知られていますが、多くの場所では、10 進数を直接 ( 1249767172) または 16 進数表記 ( 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同じマシン上の FireFox では認識されますが、私の Windows ビルドと cygwin ビルドではこれらの数値が認識されません。)

于 2013-02-20T08:35:01.657 に答える