Verbindungseinrichtung und -abschaltung

Mit der WSAAccept-Funktion kann eine Anwendung Aufruferinformationen wie aufruferbezeichner abrufen und Quality of Service, bevor entschieden wird, ob eine eingehende Verbindungsanforderung akzeptiert werden soll. Dies erfolgt mit einem Rückruf zu einer von der Anwendung bereitgestellten Bedingungsfunktion.

Benutzer-zu-Benutzer-Daten, die von Parametern in der WSAConnect-Funktion und der Bedingungsfunktion von WSAAccept angegeben werden, können während der Verbindungseinrichtung an den Peer übertragen werden, vorausgesetzt, diese Funktion wird vom Dienstanbieter unterstützt.

Es ist auch möglich (für Protokolle, die dies unterstützen), Benutzerdaten zwischen den Endpunkten zum Zeitpunkt der Verbindungsentsperrung auszutauschen. Das Ende, das die Beendigung initiiert, kann die WSASendDisconnect-Funktion aufrufen, um anzugeben, dass keine weiteren Daten gesendet werden, und um die Sequenz zum Beenden der Verbindung zu initiieren. Bei bestimmten Protokollen ist ein Teil der Abtrennung die Übermittlung der Trennung von Daten vom Initiator für die Entfernung. Nachdem Sie Benachrichtigung erhalten haben, dass das Remoteend das Beenden initiiert hat (in der Regel durch die FD _ CLOSE-Angabe), kann die WSARecvDisconnect-Funktion aufgerufen werden, um ggf. die Daten zu trennen.

Sehen Sie sich das folgende Szenario an, um zu veranschaulichen, wie Daten getrennt werden können. Die Clienthälfte einer Client-/Serveranwendung ist für das Beenden einer Socketverbindung verantwortlich. Zusammen mit der Beendigung wird (mithilfe der Datenverbindung) die Gesamtzahl der Transaktionen, die mit dem Server verarbeitet wurden, angezeigt. Der Server antwortet wiederum mit der kumulativen Summe der Transaktionen, die er mit allen Clients verarbeitet hat. Die Reihenfolge der Aufrufe und Hinweise kann wie folgt aussehen:

Clientseitig Serverseitig
(1) Rufen Sie WSASendDisconnect auf, um die Sitzung abzuschließen und die Transaktionssumme zu liefern.
(2) Abrufen von FD _ CLOSE, Recv mit einem Rückgabewert von 0 (null) oder WSAEDISCON-Fehlerrückgabe von WSARecv, der angibt, dass das ordnungsgemäße Herunterfahren in Bearbeitung ist.
(3) Rufen Sie WSARecvDisconnect auf, um die Transaktionssumme des Clients abzurufen.
(4) Berechnen der kumulativen Gesamtsumme aller Transaktionen.
(5) Rufen Sie WSASendDisconnect auf, um die Gesamtsumme zu übertragen.
(6) Empfangen der _ FD CLOSE-Angabe. (5a) Rufen Sie closesocket auf.
(7) Rufen Sie WSARecvDisconnect auf, um die kumulative Gesamtsumme der Transaktionen zu empfangen und zu speichern.
(8) Aufrufen von closesocket

Beachten Sie, dass Schritt (5a) Schritt (5) folgen muss, aber keine Zeitliche Beziehung mit Schritt (6), (7) oder (8) hat.