我的代码是这样的:
connectFarEnc ip port = withSocketsDo $ do
addrinfo <- getAddrInfo (Just (defaultHints {addrFlags = [AI_PASSIVE]})) ip (Just port)
let addr = head addrinfo
sock <- socket (addrFamily addr) Stream defaultProtocol
connected <- timeout 2000000 $ connect sock (addrAddress addr)
print $ show connected
return (sock, connected)
如果无法连接到服务器,我希望超时两秒,但它不起作用。相反,抛出连接失败的异常,并退出程序。
我应该如何处理这种情况以避免退出?
最佳答案
您从服务器得到了明确的答复,这产生了“连接被拒绝”。超时适用于您根本没有得到答复的情况。
关于sockets - Haskell 'timeout' 函数在应用于 'connect' 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15081787/