Ich möchte einen einfachen, kleinen C++ RAII-Wrapper über einen C-Sockel schreiben.RAII-Sockets: Wann freigeben (schließen)
Die Frage ist, in welchem Zustand ein Socket als initialisiert betrachtet wird (aus der Perspektive von RAII) und so für die Freigabe in Frage kommt.
Zum Beispiel für einen TCP-Client-Socket: Wenn der socket
Aufruf erfolgreich ist, aber der connect
Aufruf fehlgeschlagen ist, sollte close
aufgerufen werden?
Dies ist nur ein Beispiel, Ich interessiere mich für eine allgemeine Antwort, so etwas wie:
- Jeder Sockel erfolgreich durch
socket
erstellt wurden, müssen geschlossen werden.
oder - Es muss für jedes
connect
,listen
oderaccept
eine Schließung geben.
Der Man-Pages für socket
& Freunde und close
ist nicht ganz klar (oder zumindest für mich).
Wenn Sie ein gültiges/aktives Socket-Handle haben, wird es initialisiert. –
@CaptainObvlious Wann wird ein Socket-Handle als vaid/active betrachtet? – bolov
Das Socket-Handle ist gültig, wenn "Socket" oder "accept" einen anderen Wert als "INVALID_SOCKET" zurückgibt und bis Sie den Handle "schließen". –