我有一個(從我可以告訴)完美工作的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