CSocket Recive dauert immmer 2000 ms
-
Ich greife mit CSocket auf einen Httpserver zu.Ich habe die Zugriffszeiten gelogt und das Recieve verhält sich komisch.Hier mal ein einzelner Zugriff:
[10728265] 2011-10-10 11:52:56 Send After Send Duration: 0 Bytes send: 381 [10728265] 2011-10-10 11:52:56 Recieve Before spider2.carwatch.de [10730265] 2011-10-10 11:52:58 Recieve After Recieved Bytes:8712 Duration: 2000 [10730265] 2011-10-10 11:52:58 Recieve Before spider2.carwatch.de [10730265] 2011-10-10 11:52:58 Recieve After Recieved Bytes:35391 Duration: 0
Wie man sehen kann liest er erst 8712 bytes in 2 Sekunden und dann de Rest in 0 Sekunden.
Hier ist meine Recieve Funktion:
bool CSocketManager::recieve(CString & buffer) { if(!is_connected()) { reconnect(); return false; } char buf[BUFFER_LENGTH]; int byte_read = client_socket.Receive(buf,TCP_PACKET_LENGTH*5); if(byte_read == SOCKET_ERROR) { reconnect(); return false; } if(byte_read == 0) { reconnect(); return false; } CString helper(buf); buffer = helper.Left(byte_read); return byte_read > 0; }
Die wird solange aufgerufen bis keine BYtes mehr kommen oder di eKlasse die das Http auswertet sagt das,die Seite zuende ist.Woran kann dieses komische Verhalten liegen?
-
Das tritt nur auf,wenn ich die Verbindung zwischen den einzelnen Aufrufen der Seite nicht schliesse und neu aufmache.