5 秒ごとにクライアントにデータを送信するサーバーがあります。サーバーがデータを送信してから印刷するまで、クライアントが read() をブロックするようにします。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;