Killing accept(..) thread
-
hi guys!
also ich hab nen schicken thread der "accepts" durchführt, und somit blockierend ist.
das ging die letzten jahre auch gut, nur soll das programm jetzt den thread beenden können. leider blockiert der thread aber bei "accept", ich kann ihn daher nicht sich selbst beenden lassen: also hab ich ihn "gekillt" (TerminateThread(..)). Leider geht das ganz und dar net. mein programm crasht übelst. das ist aber sehr mekrwürdig, da der Thread ja nix macht!?!?einer ne idee?
-
Du könntest den Socket schließen.
-
der ist schon zu:
shutdown(m_currentSocket, SD_SEND);
closesocket(m_currentSocket );
TerminateThread(m_hThread, 1);
-
Und nach closesocket kommt accept nicht mit einem Fehler zurück?
-
code?
-
wenn das so waer, dann ... hmm. wirklich komisch.. moment
-
also raushaun tuts mich immer, wenn ich versuche einen schon geschlossen socket nochmal zu schliessen (soviel ist klar).
kann man socket testen ob er schon geschlossen ist (bestimmt nur eine Konstante oder?)
nur er trennt nicht wirklich (ich kann immer noch mit einem client verbinden. sollte doch nicht mehr möglich sein
-
Horst2 schrieb:
code?
-
nun mal genaues:
->trennen klappt, man braucht thread nicht zu killen
->reconnect klappt, socket ist also wirklich freijedoch, wenn destructor der "connection-klasse" (wo threads und sockets gekapselt sind) aufgerufen wird:
A) verbindung aktiv:
programm beendet nicht
B)verbindung geschlossen:
crash. //er sagt "Damage after Normal Block" und es bleiben alle mein heap- objecte bestehen..kann das was mit dem handle auf den thread zu tun haben? den hab ich erst eingeführt als ich den killen wollte (vorher hab ich den nie benutzt)?
-
es könnte sein das du dir irgendwo den Speicher überschrieben hast
-
tatsächlich!
wenn ich den handle entferne (nicht speichere), dann geht alles wieder.
muss ich den handle "löschen" ? ich hab den immer auf NULL gesetzt.. hat scheinbar nichts genütztfreehandle(hNd) ??? gibts sowas?