Rp2040 connect Sensordaten ueber WiFi senden

Ich glaub jetzt habe ich den Fehler im Client (c-Program auf dem Computer) gefunden: ich rufe recv() einfach mehrfach auf bis eine Leerzeile gelesen wird, die dann das Ende vom Header markiert.

Also dieses
ret = recv(sockfd, buffer, BUF_SIZE, 0);
ersetzt durch
ret = mehrfach_recv(sockfd, buffer, BUF_SIZE, 0);

Mit entsprechendem neuen Unterprogramm:

int mehrfach_recv(int sockfd, char *buffer, int size, int flags)
{
 int ret,i,j, imax=1000000; //Schlaufenabbruch nach ca. 1 Sekunde
 int n=size;
 for(i=j=0; (ret = recv(sockfd, &buffer[j], n, flags)) >= 0 && i<imax; i++)
  {
   j += ret;
   if(j>3 && strncmp(&buffer[j-3],"\n\r\n",3)==0 || strncmp(&buffer[j-2],"\n\n",2)==0)
    {break;}//fertig wenn Leerzeile erkannt
   if(j>=size) {printf("Buffer zu klein\n"); return -1;}
   n=1; //im naechsten Durchlauf 1 weiteres Byte empfangen
   usleep(1); // 1 Microsekunde warten
  }
 if(i>=imax) {printf("timeout in mehrfach_recv()\n"); return -1;}
 if(ret<0) return ret;
 return j;
}

So funktioniert es auch wenn ich im Server den Header mit mehreren println() Aufrufen sende.
Fragt sich jetzt noch ob man das wirklich so kompliziert machen muss, oder ob es nicht doch auch einfacher gehen würde.

Danke für die Anregung