Verbindungseinrichtung und -abbruch
Mit der WSAAccept-Funktion kann eine Anwendung Aufruferinformationen wie Aufruferbezeichner und Dienstqualität abrufen, bevor sie entscheidet, ob eine eingehende Verbindungsanforderung akzeptiert werden soll. Dies erfolgt mit einem Rückruf einer von der Anwendung bereitgestellten Bedingungsfunktion.
Benutzer-zu-Benutzer-Daten, die durch Parameter in der WSAConnect-Funktion und die Bedingungsfunktion von WSAAccept angegeben werden, können während der Verbindungsherstellung an den Peer übertragen werden, sofern diese Funktion vom Dienstanbieter unterstützt wird.
Es ist auch möglich (für Protokolle, die dies unterstützen), Benutzerdaten zwischen den Endpunkten zum Zeitpunkt des Verbindungsabbruchs auszutauschen. Das Ende, das den Teardown initiiert, kann die WSASendDisconnect-Funktion aufrufen, um anzugeben, dass keine weiteren Daten gesendet werden, und die Verbindungslöschsequenz zu initiieren. Bei bestimmten Protokollen ist ein Teil des Teardowns die Übermittlung von Trenndaten vom Teardown-Initiator. Nach dem Empfang der Nachricht, dass das Remoteende den Teardown initiiert hat (in der Regel durch die FD_CLOSE-Angabe), kann die WSARecvDisconnect-Funktion aufgerufen werden, um ggf. die Trennungsdaten zu empfangen.
Sehen Sie sich das folgende Szenario an, um zu veranschaulichen, wie Daten zum Trennen von Daten verwendet werden können. Die Clienthälfte einer Client-/Serveranwendung ist für das Beenden einer Socketverbindung verantwortlich. In Übereinstimmung mit der Beendigung stellt es (unter Verwendung von Trenndaten) die Gesamtzahl der Transaktionen bereit, die mit dem Server verarbeitet wurden. Der Server antwortet wiederum mit der kumulativen Summe der Transaktionen, die er mit allen Clients verarbeitet hat. Die Abfolge von Aufrufen und Hinweisen kann wie folgt erfolgen:
Clientseitig | Serverseitig |
---|---|
(1) Rufen Sie WSASendDisconnect auf, um die Sitzung abzuschließen und die Transaktionssumme bereitzustellen. | |
(2) Abrufen FD_CLOSE, Recv mit dem Rückgabewert 0 (null) oder WSAEDISCON-Fehlerrückgabe von WSARecv , der angibt, dass das ordnungsgemäße Herunterfahren ausgeführt wird. | |
(3) Rufen Sie WSARecvDisconnect auf, um die Transaktionssumme des Clients abzurufen. | |
(4) Kumuliertes Gesamtergebnis aller Transaktionen. | |
(5) Rufen Sie WSASendDisconnect auf, um das Gesamtergebnis zu übertragen. | |
(6) FD_CLOSE Angabe erhalten. | (5a) Closesocket aufrufen. |
(7) Rufen Sie WSARecvDisconnect auf, um die kumulative Gesamtsumme der Transaktionen zu empfangen und zu speichern. | |
(8) Closesocket aufrufen |
Beachten Sie, dass Schritt (5a) Schritt (5) folgen muss, aber keine Zeitliche Beziehung zu Schritt (6), (7) oder (8) aufweist.