Ciao ragazzi,<br>sto giocherellando un po con C e stavo provando a scrivere un piccolo programma che manda pacchetti UDP ad un host solo che ho notato che la funzione rcvfrom resta bloccata finchè il server non manda una risposta anche vuota.<br>
<br>Parte del codice esegue questo:<br><br>read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)&addr, sizeof(addr)); <br> if (read < 0) { <br> perror("Request error"); <br> return -1; <br>
}<br> <br> read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); <br> if (read < 0) { <br> perror("Read error"); <br> return -1; <br> }<br> <br>
/**<br> * Print results <br> **/ <br> if (read > 0) { <br> buffer[read]=0; <br> if (fputs(buffer, stdout) == EOF) { <br> perror("fputs error"); <br>
return -1; <br> } <br> }<br clear="all"><br>Ho provato a usare le fnctl per impostare la socket in modo non bloccante ma ottengo solo l'uscita dal programma e nessun invio di pacchetti.<br>
<br>Adesso non è che mi importi tanto avere una risposta dal server e potrei ovviare al problema eliminando la parte di codice dove aspetto risposta, ma la mia curiosità dal punto di vista didattico rimane.<br>Qualcuno saprebbe illuminarmi in qualche modo?<br>
<br>Grazie<br><br>Ciao<br><br>-- <br>Filippo Sallemi<br>