Ho letto la teoria prima di cercar di scrivere la soluzione, so bene quali sono le differenze tra i protocolli citati; anche io volevo approcciare la soluzione in tcp, ma cosi facendo non si connetteva... Comunque non ho certo chiesto la soluzione del livello, il mio problema e ben più specifico. Oltretutto quel gioco mi pare un'ottimo modo per imparare.

Comunque: http://users.lilik.it/~mirko/gapil/gapilsu266.html

Se non sono disponibili dati la funzione si blocca, a meno di non aver aperto il socket in modalità non bloccante, nel qual caso si avrà il solito errore di EAGAIN. Qualora len ecceda la dimensione del pacchetto la funzione legge comunque i dati disponibili, ed il suo valore di ritorno è comunque il numero di byte letti.