簡體   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