http ohne socket timeout



  • Hallo,
    ist diese funktion zu verbessern, oder überhaupt lauffähig zu gestalten.*g*
    mfg witec

    int Empfangen(void){
    /*  int bytes, allbytes = 0;
      while(bytes > 0){ //solange bis nichts mehr kommt
      bytes = recv(s, buffer[allbytes], sizeof(buffer)-1, 0); // 1024 byte get
      allbytes += bytes;
      }
      buffer[allbytes] = '\0';
      return allbytes; //bytes zurückgeben 
    */
    	int bytes, restbytes;
    	string filter; // zum sortiren
    	char *empfangen; //gesamte daten
        empfangen = new char[1024];
        char *buffer;    // buffer für grade empfangene
        buffer = new char[5000];
    
    	bytes = recv(s, buffer, 1023, 0); //häder saugen
    	buffer[bytes] = '\0';
        strcat(empfangen,buffer); // sichern
        cout << empfangen;
        filter = buffer; // verknüpfen 
    
        //Content-Length: suchen und wert auslesen
    	int haederlaenge = 0;
    
    	int pointer = 0; // zeiger im header code
    	pointer = filter.find("Content-Length: "); // +16 byte des such strings
    	haederlaenge += pointer + 16;
    	filter.erase(0,pointer+16); // bis ende content-t entfernen
        pointer = filter.find("\r\n");  // daten länge isoliren
        haederlaenge += pointer + 2;
        // Umwandlung in int
        istringstream myStream(filter.substr(0,pointer));
        myStream >> pointer; // in pointer ist nun die länge vom daten packet
        restbytes = pointer - (1023 - haederlaenge); // die restlichen bytes
    
    	//restlichen bytes empfangen
    	do
    	{
    	bytes = recv(s, buffer, 1, 0); //häder saugen
    	buffer[bytes] = '\0';
    	strncat(empfangen,buffer,1);
    	restbytes--;
    	}
    	while(restbytes = 0);
    
    	cout << empfangen << endl;
    
    	delete(buffer);
    	delete(empfangen);
    }
    


  • was geht denn nicht?



  • im pointer *empfangen befindet sich nicht der gesamte http response was ich nicht verstehe ...?



  • witec schrieb:

    im pointer *empfangen befindet sich nicht der gesamte http response was ich nicht verstehe ...?

    aber...

    buffer[bytes] = '\0';
    strcat(empfangen,buffer); // sichern

    ...du kopierst es ja selbst dahin.
    btw: zufälligerweise ist das erste byte von 'empfangen' wohl \0


Log in to reply