トップ > Perl Tips > IPアドレスからホスト名を取得しよう


 ■ IPアドレスからホスト名を取得しよう

ホスト名(例:xxxxxxxx.provider.ne.jp)を取得するには、
環境変数のREMOTE_HOSTというものを使えば一番簡単なのですが、
環境変数とはを参照。)
このREMOTE_HOSTというのは、負荷がかかるため、
サーバによっては利用できないところもあります。

こういったことを考慮して今回はgethostbyaddrという関数を使います。
gethostbyaddrはIPアドレスからホスト情報を返すものです。

ちなみに、以前紹介したアクセスログ取得スクリプトでもgethostbyaddrが使われています。

<使い方>
$host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2);

gethostbyaddrの後ろには、pack関数を使って4バイト長にしたIPアドレス(pack関数の説明は割愛させていただきます)
と、アドレスタイプを指定します。アドレスタイプは通常2を指定します。

たまに、ホスト名を取得できないことがあります。
この対処方法はこちらです。




トラックバック

このエントリーのトラックバックURL:
http://easycgi.xrea.jp/mt-tb.cgi/53