c++ - 关于 C++ (UNIX) 中的套接字连接超时

标签 c++ sockets unix

我一直在努力为套接字设置 15 秒超时以避免它被阻塞。所以我将它配置为非阻塞,然后使用选择功能,并且工作正常......当计算机连接到网络时!

如果计算机与网络断开连接(例如,如果 Wi-Fi 信号关闭,或者如果您拔下以太网插头),当我调用连接函数时,它立即返回“网络无法访问”错误。

如果发生这种情况,我有一个循环让它重新连接,它尝试连接很多次,所以我得到了千兆字节的日志文件。

所以,我想要的是也为此设置某种超时。这实际上不是超时,但我希望它等待 15 秒,直到它再次尝试连接以避免此问题。当我认为我按照第 1 段中的解释设置的超时也可以解决这个问题时,我错了。那我该怎么做呢?

最佳答案

如果是 ENETUNREACH,您可以测试 errnosleep

关于c++ - 关于 C++ (UNIX) 中的套接字连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10299375/

相关文章:

linux - 从一个文件中读取字符串,grep 在另一个文件中第一次出现

java - 使用 Java fork 和删除特权

shell - 将两个文件与第一列进行比较,并从 shell 脚本中的第二个文件中删除重复行

c++ - 绘制 NURBS 曲线?

c++ - qnetwork没有回复状态码或错误,但失败

Java 套接字 - 为什么我需要 PrintWriter 来完成这项工作?

c# - 在 GetAddrInfo c# 套接字中不知道这样的主机

C++ 类析构函数无法正常工作

javascript - asm.js Module.ccall/Module.cwrap 回调

c - 如何在 C 中通过 TCP 发送整数数组?