rudirabbit:
Das wäre dann dynamisch. Was ist in der Praxis die optimale Methode ?
Dieses "dynamische" Einlesen von Bytes bis der Arzt kommt (wie Du es auch mit String-Objekten wohl bisher gemacht hast) ist die absolut sicherste Methode, dass Dein Webserver in höchstem Maße durch "Denial-of-Service" Angriffe gefährdet ist. Jeder, der eine HTTP-Anfrage an den Webserver senden kann, kann nämlich Deinen Server zum Absturz bringen. Der Angreifer braucht nur eine überlange HTTP-Anfrage an Deinen Server zu senden, mit mehr Bytes als Dein Server RAM-Speicher hat, und der verarbeitet und verarbeitet die eintreffenden Bytes, bis er keinen RAM-Speicher mehr frei hat und abstürzt.
Die optimale Methode in der Praxis ist, sich die maximale Länge der zu verarbeitenden Anfragen vorher zu überlegen.
char HTTP_req[81];
oder
char HTTP_req[130];
Oder wie Du es brauchst. Und die Einleseroutine dann so zu gestalten, dass niemals mehr Zeichen in das char-Array eingelesen werden als es aufnehmen kann.
Und dann kann ein böswilliger Angreifer bei einer Denial-of-Service Attacke so lange Requests und überlange Headerzeilen senden wie er möchte, und Dein Server bricht das Einlesen bei Erreichen der Maximallänge ab statt abzustürzen und "sich aufzuhängen".
Ein "optimal" programmierter Webserver hat nämlich die Eigenschaft, dass er nicht nur die Anfragen einwandfrei verarbeiten kann, die er verarbeiten soll, sondern dass er auch auf böswillige Anfragen von unliebsamen "Angreifern" angemessen reagieren kann, z.B. sich durch "falsche" überlange Anfragen nicht zum Absturz wegen RAM-Speichermangel bringen zu lassen.