2016-08-23 58 views
2

我正在嘗試做一個簡單的查找,例如在「208.97.177.124」中轉換「perdu.com」。我試着用Network.DNS.Lookup因爲這是對谷歌的第一個結果,它工作正常:Haskell的DNS查詢

rs <- makeResolvSeed defaultResolvConf 
eIp <- withResolver rs $ \resolver -> lookupA resolver $ BS.pack "perdu.com" 

的問題是,似乎忽略了/ etc/hosts文件。 Haskell正常解決域名問題的正確方法是「正常」,就像其他軟件(如ping或任何瀏覽器)一樣可以解決這個問題嗎?我假設Network.DNS.Lookup實現了一個完整的遞歸解析器,而不僅僅是使用C函數?

回答

4

這爲我工作:

import Network.BSD (getHostByName, hostAddress) 
import Network.Socket (inet_ntoa) 
import System.Environment (getArgs) 

resolve address = do 
    ent <- getHostByName address 
    inet_ntoa (hostAddress ent) 

main = resolve "perdu.com" >>= putStrLn 
+0

不需要做'名字< - X;返回名稱',我們可以簡單地使用'x'。 – chi

+0

謝謝!我更新了代碼。 –

+0

非常感謝,似乎是完美的工作! – Ulrar