У меня есть (насколько я могу судить) прекрасно работающая установка Linux (Ubuntu 8.04), где все инструменты (nslookup, curl, wget, firefox и т. д.) могут разрешать адреса. Тем не менее, следующий код не работает:
$s = new IO::Socket::INET(
PeerAddr => 'stackoverflow.com',
PeerPort => 80,
Proto => 'tcp',
);
die "Error: $!\n" unless $s;
Я проверил следующие вещи:
Perl может разрешать адреса с помощью gethostbyname (т.е. приведенный ниже код работает):
my $ret = gethostbyname('stackoverflow.com'); print inet_ntoa($ret);Оригинальный исходный код работает под Windows
- Вот как это должно работать (т.е. оно должно разрешать имена хостов), поскольку LWP пытается использовать это поведение (на самом деле я наткнулся на проблему, пытаясь отладить, почему LWP не работает для меня)
- Запуск скрипта не отправляет DNS-запросы (поэтому он даже не пытается разрешить имя). Проверено с помощью Wireshark