[Ninux-Wireless] Pacchetti UDP e rcvfrom

Michele Favara Pedarsi mfp a meganetwork.org
Gio 22 Lug 2010 14:45:49 CEST


Di heartbeat ce ne sono a iosa; da semplici script che pingano a soluzioni
complesse. Cerca prima di sviluppare l'ennesima tecnologia apposita... anche
perche' stai facendo un sistema di monitoraggio, e come tale ha bisogno di
essere affidabile; se te lo fai da solo rischi di affidarti ad una cosa che
per essere affidabile deve prima fallire qualche volta per trovare i bug...
a meno che non applichi i modelli di sviluppo piu' rigidi, con i tempi che
questi comportano...

Una via di mezzo potrebbe essere quella di impiegare un qualsiasi socket
server multithreaded generico gia' sviluppato - ie: esente da bachi - a cui
devi aggiungere solo quella pochissima logica che verifica l'arrivo di un
pacchetto ogni x secondi da y IP.

ciao

Michele



Il giorno 22 luglio 2010 14.37, Filippo Sallemi <tonyputi a gmail.com> ha
scritto:

> 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
>
> _______________________________________________
> Wireless mailing list
> Wireless a ml.ninux.org
> http://ml.ninux.org/mailman/listinfo/wireless
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://ml.ninux.org/pipermail/wireless/attachments/20100722/7c6ee22f/attachment-0001.html>


Maggiori informazioni sulla lista Wireless