872 Stimmen

Wie unterscheiden sich SO_REUSEADDR und SO_REUSEPORT?

Die man pages und Programmierdokumentationen für die Socket-Optionen SO_REUSEADDR und SO_REUSEPORT sind je nach Betriebssystem unterschiedlich und oft verwirrend. Einige Betriebssysteme haben nicht einmal die Option SO_REUSEPORT. Das WWW ist voll von widersprüchlichen Informationen zu diesem Thema und oft findet man Informationen, die nur für eine Socket-Implementierung eines bestimmten Betriebssystems gelten, die möglicherweise nicht einmal explizit im Text erwähnt wird.

Also wie genau unterscheidet sich SO_REUSEADDR von SO_REUSEPORT?

Sind Systeme ohne SO_REUSEPORT eingeschränkter?

Und was ist genau das erwartete Verhalten, wenn ich eine der Optionen auf verschiedenen Betriebssystemen verwende?

29voto

Meckis Antwort ist absolut perfekt, aber es lohnt sich hinzuzufügen, dass FreeBSD auch SO_REUSEPORT_LB unterstützt, das das Verhalten von Linux'SO_REUSEPORT imitiert - es balanciert die Last; siehe setsockopt(2)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X