Probleme mit closesocket
-
hallo,
sobald ich bei RECV als return wert SOCKET_ERROR bekomme
und ich dannach closesocket mit diesem socket aufrufe
dann hängt das programm,
habe es schon debugged er ruft closesocket auf und dann ists aus
closesocket gibt nichts mehr zurück.vielleicht kann mir wer helfen
danke schon im voraus
-
postet doch mal den code teil..
Dann werd ich ma schaun
-
CHAR receiveBuffer[0x4000]; INT recvResult = recv(serverSocket, (LPSTR)receiveBuffer, 0x4000, 0); if( recvResult < NULL || recvResult == SOCKET_ERROR ) { // sondern hängt hier.. closesocket(serverSocket); // das test erscheint gar nich mehr printf("test"); } else { ... }
-
hmm probier doch mal das
CHAR receiveBuffer[0x4000]; //Wieso (LPCSTR) INT recvResult = recv(serverSocket, receiveBuffer, 0x4000, 0); if( recvResult =< NULL || recvResult == SOCKET_ERROR ) { // sondern hängt hier.. closesocket(serverSocket); //Wir wollen ja auch aufräumen WSACleanup(); // das test erscheint gar nich mehr printf("test"); } else { ... }wenn des net geht dann ersetz mal 0x4000 durch ka. 256 und probiers
-
closesocketerror schrieb:
CHAR receiveBuffer[0x4000]; INT recvResult = recv(serverSocket, (LPSTR)receiveBuffer, 0x4000, 0); if( recvResult < NULL || recvResult == SOCKET_ERROR ) { // sondern hängt hier.. closesocket(serverSocket); // das test erscheint gar nich mehr printf("test"); } else { ... }1. Wieso "< NULL"? Wenn schon, dann < 0.
2. Ist dein serverSocket auch gültig?
3. Was liefert dir WSAGetLastError() vor dem closesocket() Aufruf?
-
das recv serversocket ... wird ca. alle 5sec aufgerufen,
natürlich wird vorher mittels select überprüft ob datenvorhanden sind.der error code ist von WSAGetLastError ist : 10038
-
sry für den doppel post,
ich habe meinen fehler gefunden.das passiert immer nur dann wenn das socket außerhalb des threads genau zwischen:
Prüfe ob Socket richtig ist und RECV ist wenn es außerhalb genau in dieser spanne also wo es bereits als gültig erklärt wird und nachher geschlossen wird,
dann kommt dieser fehlerdanke für den tipp @HelpCraft
nächste mal prüfe ich solche sachen vorher