Respecto a tu primer pregunta, los send/receive están dentro de un while (true), de manera que siempre se está reintentando enviar y recibir, salvo que el socket se cierre.
Respecto a tu segunda pregunta, la regla es leer en bucle a menos que se diga lo contrario o que tú entiendas que claramente no es necesario. Si en alguna solución no está y era necesario seguramente fue por olvido y no por otro motivo.
Martín