2016-08-23 73 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