Rp2040 connect Sensordaten ueber WiFi senden

Die ganze Schlaufe schien mir zu kompliziert zu sein. Ich habe dann auch eine etwas einfachere Variante gefunden, indem ich recv() durch read() ersetzt und den ürberflüssigen timeout-Test weggelassen habe:

int mehrfach_read(int fd,char *buf,int n)
{
 int ret;
 for(int j=0; j < BUF_SIZE-1 && (ret=read(fd,&buf[j],n)) > 0; )
  {
   j += ret;
   if(j>2 && (strcmp(&buf[j-2],"\n\n")==0 || strcmp(&buf[j-3],"\n\r\n")==0))
    {return j;}//fertig wenn Leerzeile gelesen
   n=1; //beim naechsten Durchlauf 1 weiteres Byte lesen
  }
 return -1;//Fehler wenn keine Leerzeile gefunden
}

Aufruf der Schlaufe mache ich dann so:

//ret = mehrfach_read(sockfd, buffer, BUF_SIZE);
ret = mehrfach_read(sockfd, buffer, sizeof(http_ok)+2);

Statt BUF_SIZE habe ich gleich die minimale Antwortlänge angegeben, sonst könnte es vielleicht Probleme geben falls es irgendwann mal einen schnelleren Controller gibt.

Mit dem Vorschlag von noiasca nach einfacherem Leerzeilen-Test wird es vielleicht nochmals etwas einfacher. Werde das demnächst noch ausprobieren.