[Ninux-Wireless] Pacchetti UDP e rcvfrom

Filippo Sallemi tonyputi a gmail.com
Mer 21 Lug 2010 19:05:07 CEST


Ciao ragazzi,
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.

Parte del codice esegue questo:

read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)&addr,
sizeof(addr));
        if (read < 0) {
            perror("Request error");
            return -1;
        }

        read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL);
        if (read < 0) {
            perror("Read error");
            return -1;
        }

        /**
         * Print results
         **/
        if (read > 0) {
            buffer[read]=0;
            if (fputs(buffer, stdout) == EOF) {
                perror("fputs error");
                return -1;
            }
        }

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.

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.
Qualcuno saprebbe illuminarmi in qualche modo?

Grazie

Ciao

-- 
Filippo Sallemi
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://ml.ninux.org/pipermail/wireless/attachments/20100721/82da8ab1/attachment-0001.html>


Maggiori informazioni sulla lista Wireless