http ohne socket timeout
-
Hallo,
ist diese funktion zu verbessern, oder überhaupt lauffähig zu gestalten.*g*
mfg witecint 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