首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++减少modbus_connect超时

C++减少modbus_connect超时
EN

Stack Overflow用户
提问于 2020-07-08 23:50:50
回答 1查看 238关注 0票数 0

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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2020-07-09 00:47:04

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

这里涉及到几件事,因为您说您建立了连接,并且“正在积极侦听”。不可能两者都有。

如果你建立连接,我能想到的唯一一件事就是connect (低级,不是modbus)通常会尝试几次(连接后)发送SYN数据包(大约两分钟),如果没有响应,就丢弃连接。

这可能是一个问题。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62798608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档