繁体   English   中英

C++ 减少 modbus_connect 超时

[英]C++ decrease modbus_connect timeout

我想尝试 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并获取错误描述以了解您的连接发生了什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM