我想尝试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
发布于 2020-07-09 00:47:04
如果您谈论的是TCP连接,则程序的行为可能是正确的。
这里涉及到几件事,因为您说您建立了连接,并且“正在积极侦听”。不可能两者都有。
如果你建立连接,我能想到的唯一一件事就是connect (低级,不是modbus)通常会尝试几次(连接后)发送SYN数据包(大约两分钟),如果没有响应,就丢弃连接。
这可能是一个问题。
如果您正在监听,则必须设置SO_REUSEADDR套接字选项。
在任何情况下,您都应该验证errno并获取错误描述,以了解您的连接发生了什么。
https://stackoverflow.com/questions/62798608
复制相似问题