Ich habe einen Server, der alle 5 Sekunden Daten an einen Client sendet. Ich möchte, dass der Client bei read() blockiert, bis der Server einige Daten sendet und dann druckt. Ich weiß, dass read() standardmäßig blockiert. Mein Problem ist, dass mein Client nicht auf read() blockiert. Das ist sehr merkwürdig und das scheint kein normales Problem zu sein.lesen() blockiert nicht in Socket-Programmierung
Mein Code druckt "Nichts kam zurück" in einer Endlosschleife. Ich bin auf einer Linux-Maschine, Programmierung in c. Mein Codeausschnitt ist unten. Bitte um Rat.
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;
Haben Sie überprüft, dass die Verbindung offen ist (d. H. "Sockfd" ist gültig)? –
Ein Rückgabewert von 0 von 'read()' bedeutet, dass das andere Ende (der Server) den Socket geschlossen hat. –
@Ed Heal: Ja, es ist gültig. Ich habe einen Scheck dafür. – Mathew