Billiejoex ha perfettamente ragione però c'è un problema...se la richiesta contiene connection:keep-alive il socket non viene chiuso e quindi il while non uscirebbe dalla recv fino alla successiva richiesta che non è detto che ci sia subito.
Ci vorrebbe quindi un timeout sulla recv (con una select) ma il valore del timeout potrebbe essere critico da decidere.
Il modo più sicuro è leggere l'header HTTP, vedere il valore del content-length e quindi leggere i dati con la lunghezza indicata (con l'accortezza di vedere se il browser è IE nel qual caso al valore del content-length va aggiunto 1perchè la chiavica di IE ci mette un byte più di quello che dice).
L'header lo sai che è finito perchè c'è un doppio CR-LF; quando leggi il doppio CR-LF interpreti l'header e i bytes che hai letto oltre il CR-LF li considerei come parte iniziale del body e quindi li sottrai dal content-length.
Buon lavoro![]()

perchè la chiavica di IE ci mette un byte più di quello che dice).
Rispondi quotando