修改connect()超时时间

cto*_*tor 7 c c++ sockets

我做了一些搜索,似乎无法找到我正在寻找的答案,我能找到的唯一答案是使用select来查看套接字是否已经超时,这就是我已经在做的事情.

我想知道的是,无论如何要改变connect()超时之前的时间长度?我目前正在使用select()哪个返回errnoset,EINPROGRESS直到最终返回ETIMEDOUT.无论如何我可以改变这种ETIMEDOUT情况发生之前的时间吗?目前它发生在大约60秒后.我已经尝试调整传递给select()调用的超时值,但这只会影响超时之前的select()时间.

use*_*421 4

  1. 创建套接字。
  2. 将其置于非阻塞模式。
  3. 问题connect()
  4. 调用select()poll()epoll(),指定所需的超时,并将套接字指定为 a writefd,即阻塞,直到超时到期或套接字变为可写。
  5. 如果超时,关闭套接字等。
  6. 否则通过获取套接字上的最后一个错误getsockopt()并查看它是否为零。如果是,则连接成功,否则连接失败。

请注意,您无法通过这种方式将连接超时增加到平台默认值(大约一分钟)之外,但您可以减少它。