[C] Sockets: recv() auslesen bis recv() = 0

eckigekreise
Ahoi!

Ich will den Puffer mit den empfangenen Daten per recv() auslesen, bis mir recv 0 zurückgibt. Im Grunde ganz einfach, mein erster Versuch sieht nun so aus:

code:
1:
2:
3:
4:
5:
6:
        do{
                count=recv(s,buffer,BUFFER_LENGTH-1,0);
                buffer[count]='\0';
                strncat(buffer2,buffer,BUFFER_LENGTH-(count2+1));
                count2+=count;
        }while(count2<BUFFER_LENGTH && count>0);


Wenn ich den ganzen Spaß durch gdb sickern lasse, gibt mir gdb an, dass count nach dem ersten Durchgang bereits BUFFER_LENGTH-1 groß ist, obwohl weniger empfangen wurde.
count sollte doch aber die Zahl der tatsächlich per recv aus dem Puffer geholten Bytes zurückgeben, oder nicht?
ronin
Versuchs mal so:

code:
1:
2:
3:
4:
5:
6:
7:
8:
int len;
while((len=recv(s, buffer, sizeof(buffer)-1, 0))!=0){
                buffer[sizeof(buffer)]='\0';
                strncat(buffer2,buffer, sizeof(buffer));
                //weiterer code...
}


Die Zahl in der while-Schleife (!= x) könnte auch -1 sein, bin mir nicht mehr sicher... sorry

hasta luego
ronin