AsyncSocket in Thread schliessen

Dipsi

Mitglied
Hallo an alle.

Ich schreibe eine Client/Server Applikation wo mehrere Clients auf den gleichen Server verbinden können.

Jetzt will ich das ganze mit Threads lösen.
Das Programm kann zugleich Client als auch Server sein.
Wenn ich das Programm im Server Modus starte, erstelle ich ein Thread und in diesem
ein Objekt von CAsyncSocket und setze es auf Listen().

Problem:
Wenn ich das Programm schliessen will, will ich zuerst das socket im Thread schliessen, dann das Thread und zum Schluss das ganze Programm.

In OnCancel() lösche ich das Thread mit "delete m_pServerThread".
Das funktioniert auch gut (gibt keine Memory Leaks mehr), aber nur wenn ich kein Objekt von CAsyncSocket erstelle (sprich kein Server der auf Clients wartet).

Wenn ich das Programm ausführe und im Thread den Server starte (Listen) kommt beim schliessen folgende Meldung:
sockcore.cpp - Linie 541
PHP:
ASSERT(CAsyncSocket::LookupHandle(hSocket, FALSE) != NULL);

Ich glaube, diese Meldung kommt, weil ich den Server nicht schliesse.
Habe schon versucht im Destruktor vom Thread den Server mit Close() zu beenden.

Was ist falsch?

Vielen Dank.
 
Zuletzt bearbeitet:
Hi,
du solltest den Socket unbedingt korrekt beenden, könntest mal versuchen, vor dem "close()" ein "ShutDown(2)" durchzuführen.

MfG
 
Hallo

Also das mit ShutDown(2) haut auch nicht hin.
Beim debuggen führt er ShutDown(2) aus und beim Close() haltet er an.
Auch wenn ich das Socket vor dem Thread schliesse kommt die gleiche Meldung.
 

Neue Beiträge

Zurück