[Ninux-Wireless] Pacchetti UDP e rcvfrom

Filippo Sallemi tonyputi a gmail.com
Gio 22 Lug 2010 14:37:33 CEST


Vi ringrazio per il supporto ragazzi, ed è tutto molto interessante.
Il motivo per cui sto scrivendo questo piccolissimo software è perchè vorrei
avere un heartbeat dei nodi da mandare ad un server, per il solo scopo di
tenere sotto controllo lo stato dei nodi in tempo più reale possibile ma
senza compromettere la banda.

In verità penso che sia solo sufficiente mandare un beat al server e non
ricvere nulla nel caso specifico, ovviamente però potrei sbaglairmi o non
tenere conto di qualcosa che magari mi sfugge.

So programmare in concorrenza, ma purtroppo la mia poca esperienza di
concorrenza viene da mondo java universitario.

Se pensate che quello che sto facendo sia inutile o interesante vi prego di
farmelo sapere non voglio reinventare l'acqua calda.

Ciao e grazie ancora

Il giorno 22 luglio 2010 11.54, <clauz a ninux.org> ha scritto:

> Ciao.
> La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select
> o entri nel fantastico mondo dei thread e della programmazione
> concorrente...
>
> Clauz
>
>
>
> On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote:
> > Consiglio questa lettura:
> > http://beej.us/guide/bgnet/output/html/multipage/index.html
> >
> > nello specifico:
> > http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select
> >
> > Saverio
> >
> >
> > Il 21 luglio 2010 19.05, Filippo Sallemi <tonyputi a gmail.com> ha
> scritto:
> >> 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
> >>
> >> _______________________________________________
> >> Wireless mailing list
> >> Wireless a ml.ninux.org
> >> http://ml.ninux.org/mailman/listinfo/wireless
> >>
> >>
> > _______________________________________________
> > Wireless mailing list
> > Wireless a ml.ninux.org
> > http://ml.ninux.org/mailman/listinfo/wireless
>
> _______________________________________________
> Wireless mailing list
> Wireless a ml.ninux.org
> http://ml.ninux.org/mailman/listinfo/wireless
>



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


Maggiori informazioni sulla lista Wireless