我正在尝试进行简单的查找,例如在“208.97.177.124”中转换“perdu.com”。我尝试使用Network.DNS.Lookup,因为这是谷歌的第一个结果,它运行正常:
rs <- makeResolvSeed defaultResolvConf
eIp <- withResolver rs $ \resolver -> lookupA resolver $ BS.pack "perdu.com"
问题是似乎忽略了/ etc / hosts文件。在Haskell中“正常”解析域的正确方法是什么,就像ping或任何浏览器之类的其他软件一样?我假设Network.DNS.Lookup实现了一个完整的递归解析器,而不仅仅是使用C函数?
答案 0 :(得分: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