[Windows] Socket - Connect Funktion Beenden!

lalala123

Grünschnabel
Hi,

hab mal eine Frage ob es eine Funktion gibt, mit der man einen Socket "Hard"-Killen kann

Bsp. Ich hab einen Socket-Thread, leider hängt der sich bei der Connect-Anweisung auf, weil das Netzwerk inaktiv ist. Ich möchte jetzt mit einem Befehl den Socket Schließen,
praktisch die Connect-Anweisung abbrechen, damit der Thread, Sauber und ohne MemoryLeaks beendet werden kann

Ich arbeite mit keiner Klasse, sondern mit den Standart-API's von WinSock!

Danke schonmal im voraus!
 
Ich mach das so, dass ich für jede Socket-Verbindung einen Thread starte, den ich dann überwachen und evt. auch schliessen kann. Auf jeden Fall ist die Software auch dann noch lauffähig, wenn der Socket nichts mehr macht.
 
Nicht wenn die Socket-API in der Connect-Anweisung hängt, dann liefert closesocket einen Fehler oder reagiert überhaubt nicht!
 
Hm, sorry, hab ich ma wieder schneller geschrieben, als gedacht.
Hab nur folgendes in der MSDN gesehen:
Any pending blocking, asynchronous calls issued by any thread in this process are canceled without posting any notification messages.
..aber was weiß ich... probier mal mit den SO_LINGER -Optionen herum, oder mit TimeOuts...
Oder, was du auch machen kannst: du setzt den Socket auf NonBlocking-Mode setzen, dann muss dein Thread nicht warten, während der Socket connected.
Dazu kannst du auch noch statt SocketApi WinApi benutzen und mit den asynchronen Funktionen arbeiten...
 

Neue Beiträge

Zurück