【问题标题】:What is the connect timeout for a socket on linuxlinux上套接字的连接超时是多少
【发布时间】:2010-06-02 21:32:50
【问题描述】:

我有一个在 linux ubuntu 上运行的程序,它尝试使用 TCP 连接到服务器端口。 你能告诉我如何找出客户端套接字连接到 ubuntu 的服务器套接字的超时值吗?

谢谢。

【问题讨论】:

    标签: networking sockets ubuntu


    【解决方案1】:

    最好的、可移植的解决方案是使用你自己的超时来确保你可以依赖一个已知的值:

    1) 在connect()ing 之前,将客户端套接字设置为非阻塞。使用ioctl()FIONBIO 标志或fcntl()O_NONBLOCK 标志。在 Win32 下,使用 ioctlsocket()FIONBIO 标志。

    2) connect() 到远程对等点:如果connect() 成功,那么你已经连接。

    3) 但是,如果 connect() 返回 -1 并将 errno 设置为 EINPROGRESS(在 Win32 下为 WSAEWOULDBLOCK),则只需 select() 使用您自己的超时写入的套接字描述符。

    【讨论】:

      【解决方案2】:

      我首先查看getsockopt(3) 手册页(SO_RCVTIMEO)。不过,我敢肯定你的问题远不止这些。

      【讨论】:

      • 是的,我看过了,但是 SO_RCVTIMEO 和 SO_SENDTIMEO 是用于 send()、recv() 函数调用的吗?不连接()。对吗?
      猜你喜欢
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多