Ich schreibe eine Konsolenanwendung in C++, die Sockets und senden Sie eine HTTP GET Anforderung an einen Server, aber die Antwort ist eine html Datei größer als 1000000 infact meiner Puffer: char buffer[1000000];
ist zu klein. Ich muss größere Daten vom Server erhalten als die Größe des Puffers.Wie empfangen große Daten mit recv() -Funktion mit C++?
Ich benutze diesen Code, aber was ist der Weg, um eine größere Antwort zu erhalten? Ich bin ein Anfänger in diesem Programmbereich so helfen Sie mir bitte mit Code und explenations Dank:
char buffer[1000000];
int nDataLength;
while ((nDataLength = recv(Socket, buffer, 1000000, 0)) > 0) {
int i = 0;
while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r') {
myString += buffer[i];
i += 1;
}
}
cout << myString << "\n";
Verwenden Sie einen größeren Puffer .... – jpo38
@ jpo38 yep aber 1000000 ist die maximale Größe für eine char-Array erlaubt –
Was 'recv' kehrt? Eine Zahl oder 'SOCKET_ERROR' (-1). Kleiner Puffer sollte kein Problem sein, Sie sollten eine Teilantwort für jeden Anruf zu "recv" lesen und am Ende alle Daten erhalten, die irgendwann empfangen werden. Bitte setzen Sie 'cout <<" recv gab "<< nDataLength << endl 'innerhalb Ihrer Schleife zurück, um zu sehen, ob Sie einige Daten erhalten haben oder nicht. – jpo38