我的代码是这样的:

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 - 适用于 'timeout'的Haskell 'connect'函数不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15081787/

10-10 13:52