【发布时间】:2021-02-26 02:57:28
【问题描述】:
连接到同一台机器 (127.0.0.1) 上的另一个程序时,我偶尔会遇到超时错误 (ETIMEDOUT)。相关代码如下:
do
{
fl=connect(mysocket, addr, len);
if (fl != 0)
usleep(wait *= 2);
}
while (fl == -1 && (errno == ETIMEDOUT));
我主要在 Linux 上进行开发,以相同方式运行的相同代码永远不会产生此错误。我觉得这真的很令人困惑,因为我无法想象本地连接时会出现任何延迟,而且我的理解是,如果主机端口不可用,错误将是 ECONNREFUSED。
【问题讨论】:
-
你不能这样做。任何连接失败都会使套接字无法使用:您必须关闭它并创建一个新的并连接它。