Nella mia applicazione ho riscontrato un errore che non sembra essere riproducibile. Ho una connessione socket TCP che non è riuscita e l'applicazione ha provato a ricollegarla. Nella seconda chiamata a connect() che tenta di riconnettersi, ho ottenuto un risultato di errore con errno == EADDRNOTAVAIL che la pagina man per connect() dice significa: "L'indirizzo specificato non è disponibile dal computer locale."Perché connect() fornisce EADDRNOTAVAIL?
Guardando la chiamata a connect(), il secondo argomento sembra essere l'indirizzo a cui si riferisce l'errore, ma come ho capito, questo argomento è l'indirizzo di socket TCP dell'host remoto, quindi sono confuso sulla pagina man riferita alla macchina locale. È possibile che questo indirizzo sull'host del socket TCP remoto non sia disponibile dal mio computer locale? Se è così, perché dovrebbe essere? Doveva essere riuscito a chiamare connect() la prima volta prima che la connessione fallisse e tentò di riconnettersi e ottenne questo errore. Gli argomenti per connect() erano gli stessi entrambe le volte.
Questo errore sarebbe transitorio e, se avessi provato a chiamare di nuovo, sarebbe potuto andare via se avessi aspettato abbastanza? In caso contrario, come dovrei provare a recuperare da questo errore?
Ho un problema simile in un grande ammasso Redis. Qual è il tuo caso d'uso? Il collegamento – Riccardo