Ho un server che invia dati a un client ogni 5 secondi. Voglio che il client blocchi su read() finché il server non invia alcuni dati e poi li stampa. So che read() sta bloccando di default. Il mio problema è che il mio client non sta bloccando su read(). Questo è molto strano e questo non sembra essere un problema normale.read() non sta bloccando la programmazione socket
Il mio codice stampa "Niente è tornato" in un ciclo infinito. Sono su una macchina Linux, programmando in c. Il mio snippet di codice è sotto. Per favore consiglio
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;
Avete controllato che la connessione sia aperta (cioè 'sockfd' è valido)? –
Un valore di ritorno di 0 da 'read()' significa che l'altra estremità (il server) ha chiuso il socket. –
@Ed Heal: Sì, è valido. Ho un assegno per quello. – Mathew