C++减少modbus_connect超时

C++ decrease modbus_connect timeout

本文关键字:connect 超时 modbus 减少 C++      更新时间:2023-10-16

我想尝试10个即时modbus连接。然而,每次我连接失败,我都必须等待2分钟才能进行下一次连接,因为上一次modbus_connect调用仍在积极侦听。所以,如果我10次连接失败,我必须等待20分钟。

int max_tries = 10;
int retries = 0;
while ((modbus_connect(ctx) == -1) && retries < max_retries){
retries++;
// wait 2 mins
// I need to remove this waiting time
}

有人能帮我减少超时时间吗?我正在使用Libmodbus v3.1.6

如果您谈论的是TCP连接,则程序的行为可能是正确的。

这里涉及到几件事,因为你说你建立了联系;正在积极倾听"不可能两者都有。

如果你建立了连接,我唯一能想到的是,通常connect(低级别,而不是modbus(会尝试多次(在连接后(发送SYN数据包(大约两分钟(,如果没有响应,则放弃连接。

这可能是一个问题。

如果正在侦听,则必须设置SO_REUSEADDR套接字选项。

在任何情况下,您都应该验证errno并获得错误描述,以了解您的连接发生了什么。