in effetti devo utilizzarla per controllare la fine di una stringa inviata dal Server ad un Client.
Siccome se faccio un ciclo while, la risposta del Client viene trasmessa, ma poi il Client rimane bloccato perchè la ulteriore read non ha più niente nel buffer, ho pensato di inserire una readln così non dovrebbe bloccarsi, il codice che devo sostituire è:

#include "basic.h"

main(int argc, char *argv[])
{
int sockfd,n;
struct sockaddr_in servaddr;
char buff[MAXLINE];

if(argc!=2)
err_quit("Usage: %s <IP address>\n",argv[0]);

if ( (sockfd = socket(AF_INET, SOCK_STREAM,0)) < 0 )
err_sys("socket error");

servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr=inet_addr(argv[1]);
servaddr.sin_port = htons(SERV_PORT);


if(connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) <0)
err_sys("connect error");

while ( (n = read(sockfd, buff, MAXLINE)) > 0 ) {
buff[n] = 0;
if (fputs(buff, stdout) == EOF)
err_sys("errore in fputs");
}
if (n < 0)
printf("errore in read");
exit(0);
}