Warum würde connect () EADDRNOTAVAIL geben?

Ich habe in meiner Anwendung einen Fehler, der nicht reproduzierbar zu sein scheint. Ich habe eine TCP-Socket-Verbindung, die fehlgeschlagen ist, und die Anwendung hat versucht, die Verbindung wiederherzustellen. Beim zweiten Aufruf von connect () beim Versuch, die Verbindung wiederherzustellen, wurde mit errno == EADDRNOTAVAIL ein Fehler gemeldet, der in der Manpage für connect () wie folgt lautet: "Die angegebene Adresse ist auf dem lokalen Computer nicht verfügbar."

Betrachtet man den Aufruf von connect (), so scheint das zweite Argument die Adresse zu sein, auf die sich der Fehler bezieht. Nach meinem Verständnis handelt es sich bei diesem Argument jedoch um die TCP-Socket-Adresse des Remote-Hosts Manpage, die sich auf den lokalen Rechner bezieht. Ist diese Adresse für den Remote-TCP-Socket-Host auf meinem lokalen Computer nicht verfügbar? Wenn ja, warum sollte das so sein? Der erste Aufruf von connect () musste erfolgreich sein, bevor die Verbindung fehlschlug. Es wurde versucht, die Verbindung wiederherzustellen, und dieser Fehler wurde gemeldet. Die Argumente für connect () waren beide Male gleich.

Wäre dies ein vorübergehender Fehler, der verschwunden wäre, wenn ich versucht hätte, erneut eine Verbindung herzustellen, wenn ich lange genug gewartet hätte? Wenn nicht, wie soll ich versuchen, diesen Fehler zu beheben?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage