我有一个(从我可以告诉)完美工作的Linux安装程序(Ubuntu 8.04),其中所有工具(nslookup,curl,wget,firefox等)都能够解析地址。然而,下面的代码失败:Perl套接字在Linux下如何解析主机名?
$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 验证
是的!是!是! :-)这是问题所在。非常感谢你的解决方案。现在我要弄清楚的是如何说服LWP创建一个特殊的socked(启用multihomed选项)。 – 2008-10-02 05:26:30