il problema come immaginavo è che ru valuti solo l uscita 0 e non la -1.
Nel server avrai una cosa simile a questa:
codice:
while((n = reti_readline(sockfd, line, MAXLINE))> 0)
            reti_writen(sockfd, ack, strlen(ack)); 
puts("debug server exit while");

togliendo il for;;

nel client avrai:
codice:

codice:
while(fgets(sendline, MAXLINE, fp)){
        if ( reti_writen(sockfd, sendline, strlen(sendline)) <= 0) ...error
        if(reti_readline(sockfd, recvline, MAXLINE)<=0){
            printf("%s: server terminated prematurely", __FILE__);
            exit(1);
        }
        fputs(recvline, stdout);
        fflush(stdout);
}


scusa per il codice ma al phone fatico a far meglio