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;