read () не блокируется при программировании сокетов

У меня есть сервер, который отправляет данные клиенту каждые 5 секунд. Я хочу, чтобы клиент заблокировал read (), пока сервер не отправит некоторые данные, а затем распечатает их. Я знаю, что read () по умолчанию блокируется. Моя проблема в том, что мой клиент не блокирует чтение (). Это очень странно, и это не кажется нормальной проблемой.

Мой код печатает "Ничего не вернулось в бесконечном цикле. Я на машине Linux, программирование в c. Мой фрагмент кода ниже. Пожалуйста посоветуй.

while(1)
{
    n = read(sockfd, recvline, MAXLINE);
    if ( n > 0) 
    {
        recvline[n] = 0;    
        if (fputs(recvline, stdout) == EOF)
            printf("fputs error");
    }
    else if(n == 0)
        printf("Nothing came back");
    else if (n < 0)
        printf("read error");
}
return; 

Ответы на вопрос(3)

Ваш ответ на вопрос