recv genaue Anzahl der zeichen

Hi,
wie kann ich mit der recv Funktion genau eine bestimmte Anzahl von Zeichen empfangen. Ich möchte warten, bis meine maximale Länge die zu empfangen ist voll ausgeschöpft ist.

int anzahl;
anzahl = recv(socket, inhalt, sizeof(inhalt), 0 );

So empfange ich ja leider maximal die größe von inhalt, aber manchmal auch weniger Zeichen.
Wie kann man dies nun ändern, dass gewartet wird, bis inhalt voll ist?
Danke schonmal.
 
Danke schonmal für diesen Tip.
Dies hatte ich aber auch schon probiert, aber leider funktioniert das nicht so wie ich mir das gedacht hätte.

Mein Code sieht jetzt wie folgt aus.(kleine Änderung)

#define paketlaenge 200

int anzahl;
anzahl = recv(socket, inhalt, paketlaenge, MSG_WAITALL);

Leider wartet er jetzt nicht so lange, bis ich 200 Zeichen empfangen habe.

Seht ihr den Fehler? Ach übrigens Programmiere ich unter Linux.
 
Verwende doch bitte die Code Tags. Und poste mal den kompletten Code. Wahrscheinlich hast du deinen Socket auf non-blocking mode gestellt, da funktioniert dann MSG_WAITALL natürlich nicht - oder es liegt ein anderer Fehler vor (steht aber auch in der Manpage).

Gruß
 
Zurück