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.


Anmelden zum Antworten