【问题标题】:Shorter timeout on connect连接超时时间更短
【发布时间】:2012-04-16 15:19:47
【问题描述】:

connectWSAETIMEDOUT 失败。这很好,但有没有办法缩短超时时间?也许像2-3秒?目前它似乎更高,例如 10 秒。

操作系统是 Windows,使用 Winsock 和 C++

【问题讨论】:

标签: c++ windows winapi winsock


【解决方案1】:

在调用connect() 之前将套接字置于非阻塞模式。当它返回 WSAEWOULDBLOCK 错误时,请使用您想要的任何超时间隔调用 select()。如果select() 报告套接字变为可写,则连接成功。如果select() 报告超时,请关闭套接字。

【讨论】:

  • 在我的 PC 上,默认(阻塞)连接超时为 3+6+12+24=45 秒。在此间隔到期之前以非阻塞模式关闭套接字是否安全?
  • @truthseeker:无法保证任何给定 PC 上默认连接超时的时间间隔。是的,您可以在套接字超时之前关闭它。
【解决方案2】:

以前有人问过这个问题:WINSOCK - Setting a timeout for a connection attempt on a non existing IP?

不,它由 IP 堆栈处理。如果您需要更改此功能,则必须启动计时器并终止连接。

【讨论】:

    猜你喜欢
    • 2023-01-25
    • 2022-01-21
    • 2013-11-03
    • 2019-12-16
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    相关资源
    最近更新 更多