2010-11-11 95 views
0

我有一個程序(用C編寫),使用getaddrinfo(),它的第一個參數是我希望它獲取有關地址信息的主機名,我們假設它是「域」。在同一臺機器上的/etc/hosts文件中,我可以看到「域」應該解析爲192.168.1.200。當我運行程序時,它每次都掛在這個通話上,無法獲得地址信息。但是,如果我將「域」替換爲實際的IP地址,則工作得很好。C getaddrinfo()不解析名稱

順便說一下,這個問題在一個星期前還沒有存在,這是一個新的問題,突然讓它變得醜陋的頭。我相當肯定,上週我們必須對這臺機器做些什​​麼,我也試圖與其他員工進行驗證,但他們也不知道爲什麼會出現這種情況。

所以,我的問題是,有沒有人知道這會突然發生?我可以檢查什麼來驗證它是如何配置的?提前致謝。

+0

難道你不能發佈代碼示例嗎? – 2010-11-11 23:39:40

+0

命令行工具(如「ping」)是否可以正確解析相同的名稱? – SimonJ 2010-11-11 23:42:31

回答

1

您使用的是Linux嗎?我的猜測是,你已經搞亂了glibc使用的libnss亂七八糟的東西來路由所有名稱查找(主機名,用戶名,組名等),也許是由於glibc升級而造成的。嘗試使用strace運行程序,看看它是否嘗試(和失敗)打開libnss_*文件。另請參閱​​以確保hosts:行的內容爲hosts: files dnsman nsswitch.conf可能會有所幫助。

+0

對不起,我們使用的是Linux(Gentoo),它可能是一個拙劣的glibc升級問題,我會研究一下。謝謝。 – LebowskiT1000 2010-11-11 23:48:57

+0

原來我在做一個很大的假設DOH!我用有問題的函數編寫了一個簡短的小程序,並且沒有任何問題!經過一些更多的搜索和調試後,我發現它是從我正在創建的套接字連接中獲得的數據出現問題。對不起,但感謝您的幫助。 – LebowskiT1000 2010-11-12 01:58:25