Bei Verwendung eines SFML TcpListener
auf dem Haupt-Thread, wie kann ich sofort die TcpListener::accept()
Funktion stoppen? Zum Beispiel, wenn ich in der Lage sein würde, eine SIGINT
zu erhalten und Dinge aufzuräumen. Um dies zu tun, müsste ich in der Lage sein, die TcpListener::accept()
-Funktion Disconnected, oder Error zurückzugeben.Stoppt sofort SFML TcpListener
Antwort
Danke an Sean Cline für den Vorschlag non-blocking mode und selectors.
Als Referenz blockieren Funktionen in SFML/Networking (ich bin nicht sicher über seine anderen Komponenten) standardmäßig, was bedeutet, dass sie nicht zurückkehren, bis sie ihren Zweck erfüllt haben (in meinem Fall eine TCP-Verbindung akzeptieren) . Wenn Sie non-blocking mode verwenden, wird die Funktion sofort zurückkehren und ihren Status zurückgeben. Für TcpListener::accept()
wird sf::Socket::Status::Done
zurückgegeben, wenn eine Verbindung akzeptiert wurde und die Aufgabe erfolgreich abgeschlossen wurde. Andernfalls könnte sf::Socket::Status::Disconnected
oder sf::Socket::Status::NotReady
zurückgegeben werden.
Wie für selectors, erlauben sie Ihnen, mehrere Sockets in einem einzigen Thread zu verwalten, und sind besonders nützlich, wenn Sie nicht wissen, welche Daten zuerst gesendet werden.
- 1. VB.NET Process.Start() stoppt sofort
- 2. jQuery-Schieberegler stoppt nicht sofort
- 3. Warum stoppt Systemd sofort nach dem Start?
- 4. ThreadPool Verhalten und TCPListener
- 5. Viele TcpListener eingehende Verbindungen
- 6. TcpListener handle POST Antwortvariablen
- 7. TcpListener akzeptiert keinen Client
- 8. Windows-Dienst (Hosting WCF-Dienst) stoppt sofort beim Start
- 9. Systemd stoppt OrientDB sofort nach dem Start auf Ubuntu 16.04
- 10. C Vorverarbeitung stoppt nicht sofort nach einem # Fehler
- 11. Twilio „Outgoing Dial“ sofort mit „Keine Antwort“ stoppt -status
- 12. SFML FehlercodeBlocks
- 13. SFML Zugriffsverletzung
- 14. Erhalte die Host-IP-Adresse in SFML
- 15. Hilfe mit Ausnahme mit TCPListener
- 16. TcpListener von System.Net.Sockets Namespace fehlt
- 17. TcpListener und TcpClient nicht gefunden
- 18. SFML 2.2 Unbehandelte Ausnahme bei 0x00007FFA622C21F9 (sfml-system-2.dll)
- 19. SFML Shader funktioniert nicht
- 20. SFML Sprite weißes Quadrat
- 21. SFML dlls nicht gefunden
- 22. SFML mit Code :: Blöcke
- 23. SFML lädt keine Audiodateien
- 24. SFML/C++ Benutzereingabe simulieren
- 25. SFML Texture Speicherverwaltung
- 26. C++ SFML Collison Detection
- 27. Mein SFML-Programmabsturz?
- 28. SFML undefined Referenz
- 29. SFML - Wie erwartet Stringbreite?
- 30. SFML White Window
Können Sie den Sockel von unten schließen? – user4581301
@ user4581301 Wie würde ich das tun? –
'TcpListener :: close'. [Dokumentation] (http://www.sfml-dev.org/documentation/2.0/classsf_1_1TcpListener.php#ae2c83ce5a64d50b68180c46bef0a7346) sagt: "Diese Funktion stoppt den Listener. Wenn der Socket nicht hört, hat diese Funktion keine Wirkung." – user4581301