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>