sockets - Haskell 'timeout' 函数在应用于 'connect' 时不起作用

标签 sockets networking haskell tcp

我的代码是这样的:

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/

相关文章:

java - 使用 Eclipse 访问外部(网络)文件

java - Java 网络中新行 "\n"的重要性

c++ - Poco::Net 服务器和客户端 TCP 连接事件处理程序

haskell - Megaparsec:无法解析递归算术字符串

xml - 如何更换HXT中的节点?

haskell - 导出类型构造函数有什么不同吗?

java - node.js 回调是否模仿 java 接受套接字?

c++ - 需要帮助使用 QThread 的多线程应用程序

c - Socket编程客户端服务器消息读写C

sockets - Windows服务中的Indy UDP Server无法监听