• ベストアンサー

HOSTが表示されない。

お世話になります。 早速ですが、サイトで調べ、 以下のコーディングでipアドレスと、ホスト名?を表示したいのですが、 perlのシミュレーションで実行すると表示されるのですが、 私が借用しているサイト(infoseek)ではipアドレスしか表示されません。 (ipアドレスを、直接$addrにセットしても同じ結果です。) サイトにより、制限等が掛けられているのでしょうか。 コーディングの誤りであれば指摘していただきたくお願いします。 $addr = $ENV{'REMOTE_ADDR'}; $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); print "$host\n"; print "<br>\n"; print "$addr\n"; 以上、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

以下のようにgoogle.comなどをgethostbynameしたりgethostbyaddrできます か?もしできるようでしたら、お使いのクライアントPCのIPアドレスとホ スト名がDNSに登録されていないからだと思います。 #!/usr/bin/perl use warnings; use strict; use Carp; use Socket; my ( $host, $ipaddr, $addr ); print "--- gethostbyname\n"; $host = 'google.com'; $addr = gethostbyname($host) || croak "$host: $!"; $ipaddr = join( '.', unpack( "C*", $addr ) ); print "$host -> $ipaddr\n"; print "--- gethostbyaddr\n"; $host = gethostbyaddr( pack( "C4", split( /\./, $ipaddr ) ), AF_INET ) || croak "ipaddr: $!"; print "$ipaddr -> $host\n"; --- 結果 --- gethostbyname google.com -> 74.125.45.100 --- gethostbyaddr 74.125.45.100 -> yx-in-f100.google.com

nagahaha
質問者

お礼

早速有り難うございます。 やってみたところ、 テスト環境ではチャンと表示されました。 以下のとおり。 --- gethostbyname google.com -> 74.125.67.100 --- gethostbyaddr 74.125.67.100 -> google.com ただ、infoseekに登録すると、以下のとおり --- gethostbyname までしか出ません。 宜しくお願いします。

その他の回答 (1)

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.2

infoseekでは http、ftp以外は独自に socketが使えないと思いますから無理じゃないですか。

nagahaha
質問者

お礼

有り難うございます。 やはりそうですか、 シミュレーションで表示できていたのでそうかなと思いました。 皆さん、お世話になりました。