Frage zu Sockets
-
Hallo, habe folgendes Problem. Angenommen, ich habe einen Socket (WinSock), der auf Verbindungsanfragen wartet. Dies habe ich durch einen sich wiederholenden Aufruf der Funktion "accept" realisiert (ich binde windows.h ein) in einem dafür eigens erstellten Thread. Wie fahre ich dieses Programm nun aber korrekt herunter? Mein Accept-Thread wartet beim Aufruf von "accept" immer so lange, bis eine neue Verbindung tatsächlich vorhanden ist. Wie kann ich dieses Warten nun aber gezielt von Außen abbrechen?
Den Thread einfach per CloseHandle schließen geht nicht, da hinterher direkt alle Socket-relevanten Daten aus dem Speicher geräumt werden, und das Programm mit einem Speicherzugriffsfehler abstürzt.
Vielen Dank im Voraus!
-
WSAWaitForMultipleEvents verwenden!
-
Kannst du (irgend jemand) mir ein kurzes Beispiel bzw. Erklärung geben, wie man diese Funktion für meinen Fall verwenden kann?
-
Wie kann ich dieses Warten nun aber gezielt von Außen abbrechen?
Ganz einfach: indem du das Socket-Handle schliesst. Dann bricht accept mit einem Fehler ab.